Functions

Khai báo một hàm.

fn function_name() {

}

Một chương trình có thể có nhiều hàm.

fn main() {
    another_function(); 
}

fn another_function() {
    println!("Hello!");
}

Function Parameters

Tạo một function với các parameters.

fn main() {
    print_value(14);
    print_value(20);
    
    add_2_number(5, 10);
    add_2_number(7, 18);
}

fn print_value(value: i32) {
    println!("The given value is: {}", value);
}

fn add_2_number(a: i32, b: i32) {
    println!("{} + {} = {}", a, b, a+b);
}

Kết quả sẽ là

The given value is: 14
The given value is: 20
5 + 10 = 15
7 + 18 = 25

Statements và Expression trong một hàm

Một statement không trả về giá trị, do đó khi gán một biến với một statement sẽ tạo ra lỗi.

Ví dụ sau đây sẽ tạo ra lỗi: expected expression, found statement (`let`)

fn main() {
    let x = (let a = 10);
}

Tuy nhiên, nếu đó là một expression (biểu thức ?) thì việc gán giá trị diễn ra bình thường.

fn main() {
    let x = (5 + 10);
    let y = {
        let a = 10;
        a * 3
    };
    println!("x = {}", x);
    println!("y = {}", y);
}

Chương trình trên sẽ thực thi như bình thường.

Trong dòng lệnh gán giá trị cho biến y, do đây khối lệnh và là một expression nên kết thúc nó phải có dấu chấm phẩy ;.

Tuy nhiên, ở dòng lệnh cuối, khi trả về một giá trị sẽ không kết thúc bằng dấu chấm phẩy.

Function trả về giá trị

Trong Rust, khi muốn hàm trả về một giá trị, nó cần được khai báo kiểu dữ liệu trả về.

Nếu muốn trả về giá trị ngay lập tức, dùng keyword return. Trong Rust, hàm sẽ trả về giá trị của biểu thức sau cùng.

Ví dụ như sau

fn using_return() -> i32 {
    return 10
}

fn not_using_return() -> i32 {
    10
}

fn main() {
    let x = using_return();
    let y = not_using_return();

    println!("x = {}", x);
    println!("y = {}", y);
}

Kết quả của chương trình trên sẽ như nhau.

Note: Khi dùng keyword return, kết thúc câu lệnh bằng dấu chấm phẩy là không bắt buộc. Tuy nhiên, khi không dùng return, nếu kết thúc bằng chấm phẩy sẽ gây ra lỗi.