码迷,mamicode.com
首页 > 其他好文 > 详细

Rust中文翻译26

时间:2015-07-16 14:06:18      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:编程语言   rust   

5.5 if

Rust 对if的操作并不复杂,但是你会发现它更像一个动态类型语言,而不是一个传统的系统语言.让我们看看你是否知道这其中的微妙之处.


if是一个非常常见的概念的一个特定表述,"分支".这个名字来自于树的分支:一个决策点,多条路径可供选择.

在if的分支,是两条路的一种选择:

let x = 5;
if x == 5 {
    println!("x is five!");
}

如果我们改变了x的值,这行字就不会被打印.更特别的,如果if后面的表达式是true,那么代码块就会被执行.如果是false,就不会.

如果你想要false分支执行,使用else:

let x = 5;
if x == 5 {
    pinrtln!("x is five");
} else {
    println!("x is not five :(");
}

如果有多余一个分支,可用另一个else if:

let x = 5;
if x == 5 {
     println!("x is five!");
} else if x == 6 {
     println!("x is six!");
} else {
     println!("x is not five or six :(");
}

这些都很标准,然而,你也可以这样:

let x = 5;

let y = if x == 5 {
     10
} else {
     15
}; // y: i32

你也可以写成这样:

let x = 5;
let y = if x == 5 { 10 } else { 15 }; // y: i32

因为if是一个表达式,所以这样写可以工作.表达式的值就是表达式最后一行的值.一个没有else的if永远返回一个().

5.6 for 循环

循环用来循环一个特定的次数.然而,Rust的循环和其他系统语言的循环有点不一样.Rust的循环不想C风格的循环:

for (x = 0; x < 10; x++) {
    printf( "%d\n", x );
}

而是:

for x in 0..10 {
    println!("{}", x); // x: i32
}

更抽象的形式:

for var in expression {
    code
}

这个expression是一个迭代器.迭代器返回一系列的元素.每个元素就是循环的一个迭代.这个值会绑定到var上,它在循环体中都是可用的.一旦循环体结束了,下一个值就会从迭代器中被取出,我们就再次循环.当没有值了的时候,for循环就结束了.

在我们的例子中,0..10就是一个代表了开始和结束的表达式,然后给每一个值一个迭代器.上限是开区间,所以我们的循环只会打印0到9,没有10.

Rust没有C风格的循环是有目的的.手动控制循环中的每一个元素是很复杂的并且容易出bug,甚至对于很有经验的C程序员.

5.7 while 循环

Rust也有一个while循环.看起来像这样:

let mut x = 5; // mut x: i32
let mut done = false; // mut done: bool
while !done {
     x += x - 3;
     println!("{}", x);
     if x % 5 == 0 {
          done = true;
     }
}

我们需要维护一个mut 布尔变量绑定,done,来告诉我们什么时候结束while循环.Rust有两种方法通知迭代器: break和continue.

在此例中,我们可以用break来重写循环:

let mut x = 5;
loop {
     x += x - 3;
     println!("{}", x);
     if x % 5 == 0 { break; }
}

我们以后会一直使用loop和break来写循环.
continue也很相似,但不是结束循环,而是进入下一个迭代中.此例只打印出奇数:

for x in 0..10 {
     if x % 2 == 0 { continue; }
     println!("{}", x);
}

continue和break适用于while和for循环.

Rust中文翻译26

标签:编程语言   rust   

原文地址:http://blog.csdn.net/zcmit/article/details/46910083

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!