您现在的位置是:首页 > 编程 > 

【Rust】002

2025-07-23 16:03:28
【Rust】002 【Rust】002-基础语法:函数一、概述在 Rust 中,函数是组织代码的一个基本模块。前面几节中我们已经见过了 Rust 最重要的函数 main 函数,它是整个程序的入口。有了函数,我们就可以把代码逻辑片段封装在其中,从而提高代码的可读性和复用性。二、函数1、基本函数代码语言:javascript代码运行次数:0运行复制fn greet() { println!(&

【Rust】002

【Rust】002-基础语法:函数一、概述

在 Rust 中,函数是组织代码的一个基本模块。前面几节中我们已经见过了 Rust 最重要的函数 main 函数,它是整个程序的入口。有了函数,我们就可以把代码逻辑片段封装在其中,从而提高代码的可读性和复用性。

二、函数

1、基本函数

代码语言:javascript代码运行次数:0运行复制
fn greet() {
    println!("Welcome!");
}

2、参数

代码语言:javascript代码运行次数:0运行复制
// 主函数,程序的入口点
fn main() {
    // 使用 let 关键字声明一个不可变变量 name,并初始化为 "訾博"
    let name = "訾博";

    // 将不可变变量 name 的引用传递给 print_name 函数
    // 注意:这里没有使用 to_string(),因为 print_name 接受的是字符串切片 &str 类型
    print_name(name);
}

// 自定义函数 print_name,接受一个字符串切片 &str 类型的参数 name
fn print_name(name: &str) {
    // 打印输出 "name: " 和变量 name 的内容
    // {} 是一个占位符,用于插入变量的值
    println!("name: {}", name);
}

、即时补充:函数参数是 String&str 的区别

String
  • String 是一个可变、可增长的字符串类型,存储在堆上。
  • 通常用于需要修改或动态构建字符串的场景。
  • 拥有该字符串的所有权。
  • 常常通过 .to_string()String::from() 从一个字符串字面量创建。
代码语言:javascript代码运行次数:0运行复制
let mut s = String::from("hello");
s.push_str(", world!"); // 可以修改字符串
&str
  • &str 是一个字符串切片,通常用作函数参数,表示对某个字符串的不可变引用。
  • 它是轻量级的,并且是借用的,所以不拥有该字符串的所有权。
  • 通常用于读取字符串,并且通常用于固定或已知长度的字符串。
代码语言:javascript代码运行次数:0运行复制
fn print_name(name: &str) {
    println!("name: {}", name);
}

let s = String::from("hello");
print_name(&s); // 可以传入String的引用
print_name("world"); // 可以直接传入字面量
对比
  • &str通常更快,因为它是不可变和轻量级的。
  • String 在需要所有权或需要修改字符串时是必要的。
  • 在函数参数中,使用 &str 通常更灵活,因为它允许你接受任何字符串数据的引用。

4、返回值

Rust 的函数可以返回一个值给它的调用方。不过在介绍返回值之前,需要插入两个概念的介绍——语句(statement)和表达式(expression)

语句和表达式

语句通常表示执行一个动作,并且不会返回任何值。用 let 做变量绑定就是一个语句,例如:

代码语言:javascript代码运行次数:0运行复制
fn main() {
    let x = 1;
}

函数的定义也是一个语句。例如上面的 main 函数定义,整体就是一个语句。

刚才说了语句没有返回值,因此下面的写法是错误的:

代码语言:javascript代码运行次数:0运行复制
fn main() {
    let x = (let y = 2);
}

let y = 2是一个语句,没有返回值,因此不能把x绑定上去。

跟语句不同,表达式会求值,然后返回一个值。常见的表达式有下面几种情况:

  1. 算术表达式:1+2是一个表达式,返回值是 。甚至本身也是一个表达式
  2. 函数调用:add(1, 2)也是一个表达式,因为函数会返回一个值。
  3. 宏调用
  4. 用花括号包裹的最终返回一个值的代码块
语句块示例
代码语言:javascript代码运行次数:0运行复制
fn main() {
    // 这个语句块最后返回了temp - 1。
    // 注意这里的temp - 1后面没有分号。
    // 表达式最后不能有分号,一旦加上了分号,就会变成一个语句,而语句没有返回值。
    let result = {
        let temp = 10 * ;
        temp - 1
    };
}
返回值
代码语言:javascript代码运行次数:0运行复制
fn add(a: i2, b: i2) -> i2 {
    a + b
}

fn main() {
    let num1 = 5;
    let num2 = 7;

    let sum = add(num1, num2);
    println!("The sum of {} and {} is {}.", num1, num2, sum);
}

使用 return

代码语言:javascript代码运行次数:0运行复制
fn pass_exam(score: u2) -> bool {
    if score < 60 {
        return false;
    }
    true
}

如果一个函数没有返回值,那么其实会隐式的返回一个单元类型(),类似 java 的 void 了!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-04-0,如有侵权请联系 cloudcommunity@tencent 删除基础语法字符串rust函数

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1195541.html

相关标签:无
上传时间: 2025-07-23 06:31:01

上一篇:【Rust】003

下一篇:【Rust】001

留言与评论(共有 17 条评论)
本站网友 家居住宅风水
30分钟前 发表
num2); println!("The sum of {} and {} is {}."
本站网友 metro风格
27分钟前 发表
{}"
本站网友 徐汇租房信息
29分钟前 发表
{}"
本站网友 诺顿杀毒软件激活码
15分钟前 发表
// 注意这里的temp - 1后面没有分号
本站网友 重庆解放碑
13分钟前 发表
【Rust】002 【Rust】002-基础语法:函数一
本站网友 严韧
5分钟前 发表
概述在 Rust 中
本站网友 珀莱雅适合什么年龄
20分钟前 发表
拥有该字符串的所有权
本站网友 苏馨
26分钟前 发表
代码语言:javascript代码运行次数:0运行复制fn print_name(name
本站网友 方文山的家
29分钟前 发表
num1
本站网友 6场半全场
26分钟前 发表
类似 java 的 void 了!本文参与 腾讯云自媒体同步曝光计划
本站网友 北仑新闻网
17分钟前 发表
通常用于读取字符串
本站网友 csbs
12分钟前 发表
{}"
本站网友 东兴饭局
23分钟前 发表
然后返回一个值
本站网友 哥特式建筑特点
6分钟前 发表
拥有该字符串的所有权
本站网友 彭州房屋出租
23分钟前 发表
常见的表达式有下面几种情况:算术表达式:1+2是一个表达式
本站网友 天麻钩藤颗粒价格
14分钟前 发表
因为函数会返回一个值