fnmain(){test_fun(888);}fntest_fun(x:i32){println!("the value of x is:{}", x);}
函数体中的语句与表达式
函数体有一系列语句组成,可选的由一个表达式结束
rust是一个基于表达式的语言
语句是执行一些动作的指令
表达式会计算产生一个值
函数的定义也是一个语句
语句没有返回值,所有不可以使用let将一个语句赋给一个变量
fnmain(){let x =3;let y ={let x =1;
x +3};// 表达式// let y = {// let x = 1;// x + 3;// }; // 语句 空的()println!("the value of y is:{}", y);println!("the value of x is:{}", x);}
函数的返回值
在->符号后边声明函数返回值的类型,但是不可以为返回值命名
在rust里面,返回值就是函数体里面最后一个表达式的值
若想提前返回,需要使用return关键字,并指定一个值
大多数函数都是默认使用最后一个表达式作为返回值
fnadd_val(x:i32)->i32{
x +5// 不能加分后 ";"}fnmain(){let x =add_val(4);println!("the value of x is:{}", x)}
if表达式
if表达式允许您根据条件来执行不同的代码分支
这个条件必须是bool类型
if表达式中,与条件相关联的代码块就叫做分支(arm)
可选的,在后边可以加上一个else表达式
fnmain(){let num =3;if num >4{// 必须是bool类型println!("conditiion was true");}else{println!("conditiion was false");}}
使用else if 处理多重条件
但如果使用了多与一个else if,那么最好使用match来重构代码
fnmain(){let condition =true;// if else 返回的值的类型必须相同let num =if condition {5}else{6};println!("the value of number is:{}", num);}
rust的循环
rust提供了3种循环:loop,while和for
loop循环
loop关键字告诉rust反复的执行一块代码,直到停为止
fnmain(){letmut conunter =0;let result =loop{
conunter +=1;if conunter ==10{break conunter *2;// 分号,可以要可以不要};// 分号,可以要可以不要};println!("the result is:{}", result);}
while条件循环
另外一种常见的循环模式是每次执行循环体之前都判断一次条件
while条件循环为这种模式而生
fnmain(){letmut number =3;while number !=0{println!("{}", number);
number -=1;};// 分号 可要可不要println!("finish")}
使用for循环遍历集合
可以使用while或loop来遍历集合,但是易错且低效
可以使用for循环更简洁紧凑,它可以针对集合中的每个元素来执行一下代码
fnmain(){let a =[2,4,1,4,5];for ele in a.iter(){// 数组迭代器println!("the value is:{}", ele);}}
由于for循环的安全、简洁性,所以它在rust里用的最多
range
标准库提供
指定一个开始数字或一个结束数字,range可以生成他们之间的数字(不包含结束)
rev方法可以反转range
fnmain(){for num in(1..=5).rev(){println!("{}", num);}println!("finish")}