包龙星

来人!给常威上大刑!

雷豹

大人,上什么刑?打多少板子?您得发个具体的圣旨(函数)啊!

第九回:圣旨到,Rust 函数

函数就是打包好的一套动作。你需要的时候,喊一声它的名字,它就会照做。在 Rust 里,用 fn 来定义函数。

1. 定义函数 (拟旨)

使用 snake_case (蛇形命名法),全小写,下划线连接。

fn main() {
    println!("升堂!");
    torture(); // 调用函数
}

fn torture() {
    println!("上夹棍!");
}

2. 函数参数 (接旨)

函数可以接收参数,就像圣旨里指定要打谁。

fn main() {
    hit_person("常威", 50);
    hit_person("来福", 20);
}

// 必须声明参数类型!
fn hit_person(name: &str, count: u32) {
    println!("把 {} 拖出去打 {} 大板!", name, count);
}

3. 返回值 (复旨)

函数执行完,可以给个交代(返回值)。在箭头 -> 后面声明返回类型。

注意: Rust 里最后的表达式不需要分号 ;,加上分号就变成语句了(没有返回值)。

fn main() {
    let silver = bribe_amount();
    println!("收了 {} 两银子", silver);
}

fn bribe_amount() -> i32 {
    10000 // 注意:这里没有分号!这是返回值
    // 如果写成 10000; 就变成了 (),会报错
}
方唐镜

我写了 return 10000; 也是可以的吧?

包龙星

可以是可以,但那是脱裤子放屁!Rust 讲究简洁,最后一行直接写值就行!

动手时刻:判刑

写一个函数 sentence,接收一个罪名(字符串),返回刑期(整数)。

如果是 "打人",返回 1 年;如果是 "杀人",返回 10 年。

fn main() {
    let years = sentence("杀人");
    println!("判刑:{} 年", years);
}

fn sentence(crime: &str) -> i32 {
    // 你的代码
}
查看判决书
fn sentence(crime: &str) -> i32 {
    if crime == "杀人" {
        10
    } else {
        1
    }
}
下一回:宣判时刻(条件语句) →