这对Rust来说是一个不错的fizzbuzz我认为:
match (i % 3, i % 5) {
(0, 0) => println!("FizzBuzz"),
(0, _) => println!("Fizz"),
(_, 0) => println!("Buzz"),
_ => println!("{}", i),
}
Run Code Online (Sandbox Code Playgroud)
它也可以这样说:
match i {
i if i % 3 == 0 && i % 5 == 0 => println!("FizzBuzz"),
i if i % 3 == 0 => println!("Fizz"),
i if i % 5 == 0 => println!("Buzz"),
_ => println!("{}", i),
}
Run Code Online (Sandbox Code Playgroud)
现在那让我很困惑.
i if i % 3 == 0
Run Code Online (Sandbox Code Playgroud)
是一种表达,对吗?因此,这将评估i条件为真的时间.但如果它是假的会发生什么?
现在那让我很困惑.
Run Code Online (Sandbox Code Playgroud)i if i % 3 == 0是一种表达,对吗?
不它不是.它是一个i带有guard(i % 3 == 0)的pattern ().也许你感到困惑,因为你使用了相同的绑定名称.考虑这个修改的例子:
match i {
x if x % 3 == 0 && x % 5 == 0 => println!("FizzBuzz"),
x if x % 3 => println!("Fizz"),
x if x % 5 => println!("Buzz"),
_ => println!("{}", x),
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样读取匹配表达式
i模式匹配x(它总是匹配和i值被移动(复制)到x)和x % 3 == 0和x % 5 == 0然后println!("FizzBuzz"); 其他i模式匹配x和x % 3 == 0然后println!("Fizz"); 其他i模式匹配x和x % 5 == 0然后println!("Buzz"); 其他println!("{}", x)| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |