上一节我们熟悉了标量和复合类型,知道rust默认变量是不可变的,在编译时,编译器需要明确每个变量的大小,数组可以在栈上分配,因为他是固定大小。
我们现在要快速浏览一下rust的函数和控制流,他们和大多数语言类似,所以我们可以快速浏览一遍,我会着重讲rust不同的地方,或者是需要注意的点。
函数
rust的函数是一等公民,即函数可以作为参数,也可以作为返回值。如果没有返回值可以省略,则返回"unit",默认函数大括号最后一个表达式就是返回值(表达式需要计算出一个值,这个值就作为返回值啦,语句则不需要),若在中间语句需要返回,则使用‘return‘,若直到最后一个表达式都不需要返回,则需要在最后一个表达式后加上’;‘分号,返回‘unit‘。
噢~还有:函数和变量名需要使用‘蛇形命名法’~~即 下划线连接小写字母。对于经常使用几种语言的开发来说挺内个的 :)
下面是函数作为参数的例子,可以看到两个打印的结果是一致的。除此之外,被main()函数调用的函数在前面或者后面都可以:
顺便再啰嗦一下,rust的注释和C++一致,都可以使用‘//’行注释或者/* */块注释。
控制流
if表达式
if语句后面不需要括号“()”,直接计算表达式的值,满足则进入“if”语句之后的逻辑,若不满足则进入“else”后的逻辑。rust使用严格的语法检查,不会隐式转换表达式的值,所以若表达式的结果不是 布尔值,则会直接报错~~
fn main() { let number = 3; if number < 5 { println!("condition was true"); } else { println!("condition was false"); }}
if语句不适合多个判断,若if···else···过多,可以考虑match(后面会详细介绍)。除此之外,if表达式还可以赋值给变量。
loop
用于一直循环某段逻辑~~感觉用的很少啦。
while
判断while()中表达式条件为“真”,循环,直到条件为“假”则停止循环。
for
主要用于遍历“集合”之类的,不用考虑计数,其内部已经帮我们做了,所以不会越界。
“break”和“continue”关键字:他们都是用于最近的内层结构(若只有一层当我没说~~),“break”是直接跳出循环,也可以直接跳到某行代码标签执行;而“continue”则是跳过当前循环,继续执行下一层循环!具体可以看一下这个例子:
其实今天的内容和其他语言比较类似,可以直接对比不同的地方就好了,有问题可以直接看rust的编译提示,不是有句话说得好吗?写rust就是各种和编译器做斗争,在初期,我们要勇于斗争!善于斗争~~~ :)
领取专属 10元无门槛券
私享最新 技术干货