Rust 从 0 到 1- 基础概念 - 控制流
控制流语句里,我们最常用到的就是 if...else... 和循环,Rust 语言里目前没有 switch 语句。
if 表达式
和 C 或 Java 不同,Rust 的条件表达式不需要用小括号包裹,参考下面的例子:
与其它语言不同的是,Rust 对条件表达式的值校验比较严格,必须为布尔值(bool),否则在编译的时候就会报错,而其它语言会有些默认的规则,譬如,将非 0 的数转换为 true。因此,上面的例子中的 if number 在编译时会报错。
另外,在 else if 条件多于 1 个的时候,从可读性和代码结构上考虑,Rust 官方建议考虑使用 match (后面会有章节详细介绍)对代码进行重构。
在 let 语句中使用 if
由于 if 是个表达式,因此可以用在 let 语句里进行赋值,这个类似于 Java 里的三元表达式,参考下面的例子:
需要注意的是,一方面,条件分支里最后是个表达式;另一方面,不同分支里的表达式的值必须是同一类型,就是说类型必须是事先确定的,如果是不同类型的值,只能在运行时确定变量类型,在编译时就会报错,参考下面的例子:
循环
Rust 支持三种循环关键字,即 loop、while 和 for ,下面进行分别介绍。
loop
loop 语句里的代码会不断重复执行,直到显示的终止循环(break 关键字),参考下面的例子:
和其它语言不同,Rust 的 loop 循环可以通过 break 关键字直接返回值,譬如,用来检查线程是否完成了某项操作,在操作完成后返回结果值。参考下面的例子:
while
while 循环是指在满足某项条件时不停的循环执行代码,在不满时终止。其实也可以通过 loop、 if、 else 和 break 实现同样效果,但是由于这种场景比较常见,使用 while 来实现可读性更好,更自然简洁。参考下面的例子:
for
与其它语言不同,Rust 的 for 循环主要用于遍历集合中的数据,当然用 loop 或 while 也都可以实现,同样的原因,使用 for 可读性更好,更自然简洁。参考下面的例子:
使用 for 循环遍历集合还有 1 个好处,就是集合大小如果发生了变化,在遍历时可以不用关心循环的次数,但是如果使用 while 循环可能会发生运行时越界错误或者未完全遍历整个集合。另外,还有 1 个需要注意的是,对表达式 1..5 的遍历是不含最大值 5 的。
版权声明: 本文为 InfoQ 作者【山】的原创文章。
原文链接:【http://xie.infoq.cn/article/d564c7a60c5bb95446792b604】。文章转载请联系作者。
评论