Rust函数、条件语句、循环

文章目录

函数

Rust的函数基本形式是这样的

rust 复制代码
fn a_func(a: i32) -> i32 {
    
}

函数名是蛇形风格,rust不在意函数的声明顺序,只需要有声明即可

函数参数必须声明参数名称和类型

语句与表达式

这是rust非常重要的基础概念,我们可以认为函数体是由语句和表达式组成的

语句指的是执行某些操作并且没有返回值的步骤

例如

rust 复制代码
let a = 5; // 正确
let b = (let c = 1); // 错误 因为 let c = 1 没有返回值

表达式有计算步骤且有返回值,例如

rust 复制代码
a = 7
b + 1
c * (a + b)

rust认为{}内也是一个表达式

rust 复制代码
let a = 1;
let c = {
    let b = 1;
    a + b
};

需要注意的是,表达式的返回值是 a + b,代表整个表达式的返回值,加上;之后就成了语句,就没有返回值了

返回值需要通过->声明返回值类型,但是rust不支持自动返回值类型判断

函数体表达式不允许有返回值,不能使用return

条件语句

基本格式是这样的

rust 复制代码
fn main() {
    let number = 3; 
    if number < 5 { 
        println!("条件为 true"); 
    } else { 
        println!("条件为 false"); 
    } 
}
  1. 条件是可以不用小括号的,当然要用也行
  2. 大括号是必须加的
  3. else if 和 C++ 是类似的

条件必须是bool类型的,不允许隐式类型转换

也可以用if else 写一个三目运算符

rust 复制代码
fn main() { 
    let a = 3; 
    let number = if a > 0 { 1 } else { -1 }; 
    println!("number 为 {}", number); 
}
  1. 两个函数体表达式的返回值必须相同
  2. 必须有else

循环

while循环和其他语言是一样的

rust 复制代码
fn main() {
    let mut number = 1; 
    while number != 4 { 
        println!("{}", number); 
        number += 1; 
    } 
    println!("EXIT"); 
}

for循环是和python很像的,类似于C++的范围for

rust 复制代码
fn main() { 
    let a = [10, 20, 30, 40, 50]; 
    for i in a.iter() { 
        println!("值为 : {}", i); 
    } 
}

这里的a是数组,iter表示迭代器,后面我们会详细讲

也可以使用下标来访问数组

rust 复制代码
fn main() { 
let a = [10, 20, 30, 40, 50]; 
    for i in 0..5 { 
        println!("a[{}] = {}", i, a[i]); 
    } 
}

loop循环

相当于while true

break可以类似于return一样,让整个循环有一个返回值

除此之外也可以给循环设定标签,也就是可以在多层循环时,内部只需要一个break,就能退出所有循环,同时还能带出返回值

相关推荐
小_t_同学14 分钟前
C++之类和对象:构造函数,析构函数,拷贝构造,赋值运算符重载
开发语言·c++
GSDjisidi22 分钟前
日本IT行业|salesforce开发语言占据的地位
开发语言·职场和发展
左灯右行的爱情1 小时前
Redis 缓存并发问题深度解析:击穿、雪崩与穿透防治指南
java·数据库·redis·后端·缓存
夕水1 小时前
自动化按需导入组件库的工具rust版本完成开源了
前端·rust·trae
martian6651 小时前
从Windows开发迁移到信创开发的指南:国产替代背景下的技术路径与实践
开发语言·科技·系统架构·系统安全·创业创新
南玖yy1 小时前
C++ 成员变量缺省值:引用、const 与自定义类型的初始化规则详解,引用类型和const类型的成员变量自定义类型成员是否可以用缺省值?
c语言·开发语言·c++·后端·架构·c++基础语法
大G哥2 小时前
Java 中的 Integer 缓存池:背后的性能优化机制解析
java·开发语言·缓存·性能优化
不爱总结的麦穗2 小时前
面试常问!Spring七种事务传播行为一文通关
后端·spring·面试
小虚竹2 小时前
claude 3.7,极为均衡的“全能型战士”大模型,国内直接使用
开发语言·后端·claude·claude3.7
牛马baby2 小时前
Java高频面试之并发编程-11
java·开发语言·面试