【Rust入门知识点学与练】第5课:函数

知识点:定义和调用函数

rust 复制代码
fn main() {
    // 调用无参数无返回值的函数
    say_hello();

    // 调用有参数有返回值的函数
    let result = add(3, 5);
    println!("3 + 5 = {}", result);

    // 调用有多个参数的函数
    greet("小明", 18);
}

// 无参数无返回值
fn say_hello() {
    println!("Hello!");
}

// 有参数,有返回值(-> 后面写返回类型)
fn add(a: i32, b: i32) -> i32 {
    a + b  // 最后一个表达式不加 ; 就是返回值
}

// 多个不同类型的参数
fn greet(name: &str, age: i32) {
    println!("你好 {},你 {} 岁了", name, age);
}

核心规则

规则 说明

参数必须写类型 fn add(a: i32, b: i32)

返回值用 -> 声明 fn add(...) -> i32

返回值不加 ; a + b 是返回值,a + b; 不是

字符串参数用 &str fn greet(name: &str)

动手试试

补全下面的代码:

复制代码
fn main() {
    // 补全:调用 max 函数,传入 42 和 17,结果赋给 bigger
    // 然后打印 "较大的数是: {bigger}"

    // 补全:调用 is_adult 函数,传入 20,结果赋给 adult
    // 然后打印 "是否成年: {adult}"

    // 补全:调用 introduce 函数,传入 "小红" 和 25
}

// 补全:定义函数 max,接收两个 i32 参数 a 和 b,返回较大的那个
// 提示:用 if/else 表达式作为返回值

// 补全:定义函数 is_adult,接收一个 i32 参数 age,返回 bool
// 提示:age >= 18

// 补全:定义函数 introduce,接收 &str 类型的 name 和 i32 类型的 age
// 打印 "大家好,我叫{name},今年{age}岁"

期望输出:

较大的数是: 42

是否成年: true

大家好,我叫小红,今年25岁

写好了贴过来,没问题就进入第6课:循环(for / while / loop) 👋

贴代码

rust 复制代码
fn main() {
    // 补全:调用 max 函数,传入 42 和 17,结果赋给 bigger
    // 然后打印 "较大的数是: {bigger}"
    let bigger = max(42, 17);
    println!("较大的数是: {}", bigger);

    // 补全:调用 is_adult 函数,传入 20,结果赋给 adult
    // 然后打印 "是否成年: {adult}"
    let adult = is_adult(20);
    println!("是否成年: {}", adult);

    // 补全:调用 introduce 函数,传入 "小红" 和 25
    introduce("小红", 25);
}

// 补全:定义函数 max,接收两个 i32 参数 a 和 b,返回较大的那个
// 提示:用 if/else 表达式作为返回值
fn max(a: i32, b: i32) -> i32 {
    if a > b {
        a
    } else {
        b
    }
}

// 补全:定义函数 is_adult,接收一个 i32 参数 age,返回 bool
// 提示:age >= 18
fn is_adult(age: i32) -> bool {
    age >= 18
}

// 补全:定义函数 introduce,接收 &str 类型的 name 和 i32 类型的 age
// 打印 "大家好,我叫{name},今年{age}岁"
fn introduce(name: &str, age: i32) {
    println!("大家好,我叫{},今年{}岁", name, age);
}

评语

完全正确!👏

你掌握了:

函数的定义和调用

参数类型声明和返回值

if/else 表达式作为返回值(不加 ; )

重点知识点

  1. 函数定义格式: fn 函数名(参数名: 类型, 参数名: 类型) -> 返回类型 { 函数体 }
  2. 没有返回值的函数,省略 -> ,相当于返回 () 单元类型。
  3. if 表达式可以直接作为函数返回值,不需要写 return 。
  4. 布尔判断可以直接写 age >= 18 ,表达式结果就是 bool 。
  5. 调用函数: 函数名(实参1, 实参2) 。
相关推荐
qq_4069810311 分钟前
c++拷贝构造函数
开发语言·c++
wdyan29723 分钟前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
爱喝雪碧的可乐36 分钟前
MATLAB
开发语言·算法·matlab
叼烟扛炮1 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮1 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
unconditional1 小时前
我拆了 sdkm 的回滚设计:每个写操作,都提前写好了翻车预案
rust·开源
数字幽灵2 小时前
开源!我用 Rust 手搓了一个 Agent 原生的鸿蒙逆向分析平台
rust
H.莓飛2 小时前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
Rabitebla2 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
叼烟扛炮3 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain