0x04 – Functions

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.

CodeChoVui

CodeChoVui

Kỹ sư phần mềm, người đam mê hệ thống tối giản, web development và mã nguồn mở. Chia sẻ góc nhìn công nghệ và trải nghiệm lập trình thực chiến.

Theo dõi bản tin CodeChoVui

Nhận thông báo qua email mỗi khi có bài viết mới về lập trình, trải nghiệm phần mềm và công nghệ.

Gửi ý kiến thảo luận