If statement 在Rust中何时使用'std::cmp::ordering'而不是'if'语句
什么时候应该在If statement 在Rust中何时使用'std::cmp::ordering'而不是'if'语句,if-statement,rust,comparison,If Statement,Rust,Comparison,什么时候应该在match块中使用std::cmp::ordering,而不是使用if/else if语句?可读性是唯一的区别吗 例如: use std::cmp::Ordering; fn main() { match 2.cmp(&2) { Ordering::Less => println!("Less than 2."), Ordering::Greater => println!("Greater than 2."),
match
块中使用std::cmp::ordering
,而不是使用if
/else if
语句?可读性是唯一的区别吗
例如:
use std::cmp::Ordering;
fn main() {
match 2.cmp(&2) {
Ordering::Less => println!("Less than 2."),
Ordering::Greater => println!("Greater than 2."),
Ordering::Equal => println!("Equal to 2."),
}
}
vs
fn main(){
如果1<2{
println!(“小于2”);
}否则,如果1>2{
println!(“大于2”);
}如果1==2,则为else{
println!(“等于2”);
}
}
可读性是唯一的区别吗
我想说的是,这更像是一件枯燥(不要重复)的事情
如果你看第二个样本,它很混乱:
if
vsmatch
实际上是不同输出的数量问题:
- 如果有一个或两个分支,则使用
- 如果有三个或三个以上分支,请使用
match
匹配
比if
/else
链更易于维护
注意:我个人认为
cmp
很少直接使用。它更像是一个实现设备,允许您实现一个函数来获取所有4个不等式运算符。来自C++的解释器……< C++ >,这是一个解脱……嗯,他们正在尝试:@ McCton,在C++中添加小工具需要几十年,而漂亮的语言在几年内就已经生锈了。这就是为什么我用C++完成了。他们可以在10年内添加任何他们想要的内容,这太晚了。我个人觉得这很难阅读,必须认真思考it@mcarton:是的。现在,我们只需要元类提案就可以自动实现它了…@Keatinge:我发现主观上更容易/更难理解,我更喜欢关注客观测量。单个条件不太可能与自身不同步。
fn main() {
if 1 < 2 {
println!("less than 2.");
} else if 1 > 2 {
println!("Greater than 2.");
} else if 1 == 2 {
println!("Equal to 2.");
}
}
fn main() {
if 1 < 2 {
println!("less than 2.");
} else if 1 > 2 {
println!("Greater than 2.");
} else if 1 == 2 {
println!("Equal to 2.");
}
}
fn main() {
match 2.cmp(&2) {
Ordering::Less => println!("Less than 2."),
Ordering::Greater => println!("Greater than 2."),
Ordering::Equal => println!("Equal to 2."),
}
}