Rust - Chức năng

Các hàm là các khối xây dựng của mã có thể đọc được, có thể bảo trì và có thể tái sử dụng. Hàm là một tập hợp các câu lệnh để thực hiện một nhiệm vụ cụ thể. Các hàm tổ chức chương trình thành các khối mã logic. Sau khi được xác định, các hàm có thể được gọi để truy cập mã. Điều này làm cho mã có thể được sử dụng lại. Hơn nữa, các hàm giúp bạn dễ dàng đọc và duy trì mã của chương trình.

Một khai báo hàm cho trình biên dịch biết về tên, kiểu trả về và các tham số của hàm. Một định nghĩa hàm cung cấp nội dung thực tế của hàm.

Sr.No Mô tả chức năng
1

Defining a function

Định nghĩa hàm TA xác định những gì và cách thức một nhiệm vụ cụ thể sẽ được thực hiện.

2

Calling or invoking a Function

Một hàm phải được gọi để thực thi nó.

3

Returning Functions

Các hàm cũng có thể trả về giá trị cùng với điều khiển, quay trở lại người gọi.

4

Parameterized Function

Tham số là một cơ chế để truyền giá trị cho các hàm.

Xác định một chức năng

Một định nghĩa hàm xác định những gì và cách thức một nhiệm vụ cụ thể sẽ được thực hiện. Trước khi sử dụng một hàm, nó phải được xác định. Phần thân hàm chứa mã cần được thực thi bởi hàm. Các quy tắc đặt tên một hàm tương tự như đối với một biến. Các hàm được xác định bằng cách sử dụngfntừ khóa. Cú pháp để xác định một hàm tiêu chuẩn được đưa ra dưới đây

Cú pháp

fn function_name(param1,param2..paramN) {
   // function body
}

Một khai báo hàm có thể chứa các tham số / đối số tùy ý. Các tham số được sử dụng để truyền các giá trị cho các hàm.

Ví dụ - Định nghĩa hàm đơn giản

//Defining a function
fn fn_hello(){
   println!("hello from function fn_hello ");
}

Gọi một hàm

Một hàm phải được gọi để thực thi nó. Quá trình này được gọi làfunction invocation. Giá trị cho các tham số phải được chuyển khi một hàm được gọi. Hàm gọi một hàm khác được gọi làcaller function.

Cú pháp

function_name(val1,val2,valN)

Ví dụ: Gọi một hàm

fn main(){
   //calling a function
   fn_hello();
}

Ở đây, hàm main () là hàm người gọi.

Hình minh họa

Ví dụ sau định nghĩa một hàm fn_hello(). Hàm in một thông báo đến bàn điều khiển. Cácmain()hàm gọi hàm fn_hello () .

fn main(){
   //calling a function
   fn_hello();
}
//Defining a function
fn fn_hello(){
   println!("hello from function fn_hello ");
}

Đầu ra

hello from function fn_hello

Trả về giá trị từ một hàm

Các hàm cũng có thể trả về một giá trị cùng với điều khiển, quay lại người gọi. Các hàm như vậy được gọi là hàm trả về.

Cú pháp

Có thể sử dụng một trong hai cú pháp sau để xác định một hàm có kiểu trả về.

Với câu lệnh trả lại

// Syntax1
fn function_name() -> return_type {
   //statements
   return value;
}

Cú pháp viết tắt không có câu lệnh trả về

//Syntax2
fn function_name() -> return_type {
   value //no semicolon means this value is returned
}

sự say mê

fn main(){
   println!("pi value is {}",get_pi());
}
fn get_pi()->f64 {
   22.0/7.0
}

Đầu ra

pi value is 3.142857142857143

Chức năng với các tham số

Tham số là một cơ chế để truyền giá trị cho các hàm. Các tham số tạo thành một phần của chữ ký của hàm. Các giá trị tham số được chuyển cho hàm trong quá trình gọi của nó. Trừ khi được chỉ định rõ ràng, số lượng giá trị được truyền vào một hàm phải khớp với số lượng tham số được xác định.

Các tham số có thể được truyền cho một hàm bằng một trong các kỹ thuật sau:

Vượt qua giá trị

Khi một phương thức được gọi, một vị trí lưu trữ mới sẽ được tạo cho mỗi tham số giá trị. Các giá trị của các tham số thực tế được sao chép vào chúng. Do đó, những thay đổi được thực hiện đối với tham số bên trong phương thức được gọi không ảnh hưởng đến đối số.

Ví dụ sau đây khai báo một biến không, ban đầu là 5. Biến được truyền dưới dạng tham số (theo giá trị) cho mutate_no_to_zero()functionnction, thay đổi giá trị thành 0. Sau khi gọi hàm khi điều khiển quay trở lại phương thức chính, giá trị sẽ giống nhau.

fn main(){
   let no:i32 = 5;
   mutate_no_to_zero(no);
   println!("The value of no is:{}",no);
}

fn mutate_no_to_zero(mut param_no: i32) {
   param_no = param_no*0;
   println!("param_no value is :{}",param_no);
}

Đầu ra

param_no value is :0
The value of no is:5

Chuyển qua tài liệu tham khảo

Khi bạn chuyển các tham số bằng tham chiếu, không giống như tham số giá trị, vị trí lưu trữ mới không được tạo cho các tham số này. Các tham số tham chiếu đại diện cho cùng một vị trí bộ nhớ với các tham số thực được cung cấp cho phương thức. Các giá trị tham số có thể được chuyển bằng tham chiếu bằng cách đặt trước tên biến bằng một& .

Trong ví dụ được đưa ra dưới đây, chúng ta có một biến không , ban đầu là 5. Tham chiếu đến biến không được chuyển đếnmutate_no_to_zero()chức năng. Hàm hoạt động trên biến gốc. Sau lời gọi hàm, khi điều khiển quay trở lại phương thức chính, giá trị của biến ban đầu sẽ là giá trị không.

fn main() {
   let mut no:i32 = 5;
   mutate_no_to_zero(&mut no);
   println!("The value of no is:{}",no);
}
fn mutate_no_to_zero(param_no:&mut i32){
   *param_no = 0; //de reference
}

Toán tử * được sử dụng để truy cập giá trị được lưu trữ trong vị trí bộ nhớ mà biến param_nochỉ tới. Đây còn được gọi là hội nghị truyền hình.

Đầu ra sẽ là -

The value of no is 0.

Truyền chuỗi cho một hàm

Hàm main () chuyển một đối tượng chuỗi vào hàm display () .

fn main(){
   let name:String = String::from("TutorialsPoint");
   display(name); 
   //cannot access name after display
}
fn display(param_name:String){
   println!("param_name value is :{}",param_name);
}

Đầu ra

param_name value is :TutorialsPoint