Rust学习笔记_11——函数

Rust学习笔记_08------String
Rust学习笔记_09------模式匹配
Rust学习笔记_10------守卫


函数

文章目录

    • 函数
      • [1. 函数定义](#1. 函数定义)
      • [2. 示例](#2. 示例)
      • [3. 函数同日中的表达式和语句](#3. 函数同日中的表达式和语句)
      • [4. 参数](#4. 参数)
        • [4.1 必选参数](#4.1 必选参数)
        • [4.2 可选参数](#4.2 可选参数)
        • [4.3 参数默认值](#4.3 参数默认值)
      • [5. 高阶函数](#5. 高阶函数)

Rust语言中的函数是构成程序的基本模块,用于封装可重复使用的代码块。在Rust中,函数具有明确的结构和特性,这使得代码既强大又安全。

1. 函数定义

Rust中的函数使用fn关键字进行定义。

rust 复制代码
fn function_name(parameters) -> return_type {
    // 函数体
}


// fn:关键字,用于声明一个函数。
// function_name:函数的名称。
// parameters:函数的参数列表,使用圆括号括起来。如果没有参数,则可以为空。
// return_type:函数的返回类型。如果函数不返回任何值,则可以使用-> ()来表示空元组类型,即返回unit类型。
// 函数体:包含执行语句的代码块,用大括号{}括起来。

2. 示例

rust 复制代码
fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let result = add(5, 3);
    println!("The result is {}", result);
}

3. 函数同日中的表达式和语句

  1. 表达式:任何返回值的代码片段。在Rust中,如果函数体的最后一个表达式没有分号,它会被自动返回
  2. 语句:执行某种操作但不返回值的代码片段

4. 参数

4.1 必选参数
rust 复制代码
fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let result = add(5, 3); // 调用函数时,必须提供a和b两个参数
    println!("The result is {}", result);
}
4.2 可选参数

在Rust中,可选参数通常通过标准库中的Option类型来实现。Option是一个枚举类型,它有两个变体:Some(T)None。当你想让一个参数在函数调用时是可选的时,你可以将该参数的类型设置为Option<T>

rust 复制代码
fn greet(name: Option<&str>) {
    match name {
        Some(n) => println!("Hello, {}!", n),
        None => println!("Hello, World!"),
    }
}

fn main() {
    greet(Some("Alice")); // 提供可选参数
    greet(None); // 不提供可选参数
}
4.3 参数默认值
rust 复制代码
fn greet_with_default(name: Option<&str>) {
    let name = name.unwrap_or("Guest"); // 如果name为None,则使用"Guest"作为默认值
    println!("Hello, {}!", name);
}

fn main() {
    greet_with_default(Some("Alice")); // 提供参数
    greet_with_default(None); // 不提供参数,使用默认值
}

5. 高阶函数

高阶函数是指接收函数作为参数或返回函数的函数。Rust提供了强大的支持来处理高阶函数

rust 复制代码
fn apply_operation(a: i32, b: i32, op: fn(i32, i32) -> i32) -> i32 {
    op(a, b)
}

fn main() {
    let result = apply_operation(5, 3, |x, y| x + y);
    println!("The result is {}", result);
}
相关推荐
烤麻辣烫18 分钟前
黑马程序员大事件后端概览(表现效果升级版)
java·开发语言·学习·spring·intellij-idea
空白诗1 小时前
mdcat 在 HarmonyOS 上的构建与适配
后端·安全·华为·rust·harmonyos
烤麻辣烫2 小时前
黑马程序员苍穹外卖(新手)DAY6
java·开发语言·学习·spring·intellij-idea
whale fall2 小时前
【剑雅14】笔记
笔记
星空的资源小屋3 小时前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Xudde.3 小时前
Quick2靶机渗透
笔记·学习·安全·web安全·php
Rust语言中文社区4 小时前
【Rust日报】Dioxus 用起来有趣吗?
开发语言·后端·rust
小灰灰搞电子4 小时前
Rust Slint实现颜色选择器源码分享
开发语言·后端·rust
AA陈超4 小时前
Git常用命令大全及使用指南
笔记·git·学习
麦麦在写代码5 小时前
前端学习5
前端·学习