从本教程:
如果没有else总是会导致()作为值.
为什么Rust强加了这个限制,并且不让一个if
没有else
返回其他值,如下所示:
let y = if x == 5 { 10 };
Run Code Online (Sandbox Code Playgroud)
Luk*_*odt 12
对于你的例子,正确的问题是:" y
如果x
不是5 ,那么它的价值是多少?".这会发生什么?
let x = 3;
let y = if x == 5 { 10 };
println!("{}", y); // what?!
Run Code Online (Sandbox Code Playgroud)
你可以认为if-without-else-expression可以返回一个Option<_>
,但是......
Some()
&else { None }
)可以获得相同的行为在Rust中,几乎所有东西都是一个表达式(除了let
-bindings和以分号结尾的表达式,所谓的表达式语句).并且有一些表达总是会返回的例子()
,因为没有别的东西是有道理的.这些包括(复合)赋值(为什么?),循环和if-without-else.
归档时间: |
|
查看次数: |
423 次 |
最近记录: |