Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 当用于分隔匹配表达式的臂时,大括号和逗号之间有什么区别?_Rust_Expression - Fatal编程技术网

Rust 当用于分隔匹配表达式的臂时,大括号和逗号之间有什么区别?

Rust 当用于分隔匹配表达式的臂时,大括号和逗号之间有什么区别?,rust,expression,Rust,Expression,我刚开始学习生锈,有些事情让我困惑 我读了这本书的第2章,编写了一个猜谜游戏,其中的一些代码让我想知道什么是对的,什么是错的 例如: 以下是我在中询问的一个循环: 循环{ ... 匹配guess.cmp(&secret\u编号){ 排序::Less=>println!(“太小!”), 排序::更大=>println!(“太大!”), 排序::相等=>{ println!(“你赢了!”); 打破 } } } 我意识到我可以写这个: 匹配guess.cmp(&secret\u编号){ 排序::Le

我刚开始学习生锈,有些事情让我困惑

我读了这本书的第2章,编写了一个猜谜游戏,其中的一些代码让我想知道什么是对的,什么是错的

例如: 以下是我在中询问的一个循环:

循环{
...
匹配guess.cmp(&secret\u编号){
排序::Less=>println!(“太小!”),
排序::更大=>println!(“太大!”),
排序::相等=>{
println!(“你赢了!”);
打破
}
}
}
我意识到我可以写这个:

匹配guess.cmp(&secret\u编号){
排序::Less=>{
println!(“太低!”)//不带分号;
}//没有逗号,
排序::更大=>{
println!(“太高了!”)
}
排序::相等=>{
println!(“你赢了!!!”);
打破
}
}
我觉得它令人困惑,我不知道它是好是错,它是否会导致未来的改变。。。
有人能帮我理解吗?

如果使用大括号,则匹配臂末尾的逗号是可选的。rust解析器/标记器可以明确地解析匹配臂(带逗号或不带逗号)。逗号是可选的

任何以分号结尾的语句都是不返回任何值的语句(expect return;statement)

在第一种情况下

Ordering::Less => println!("Too small!"),

// Returns a unit value 
在使用大括号的第二种情况下,将返回不带分号的最后一行。在这种情况下,它是一个

请参见此示例:

   let flag = false; 

   let result = match flag {
        false => {
            println!("in false arm");
            100
        },
        true => {
            println!("In true arm");
            200
        }
   };
   println!("result = {}", result);
这将打印以下内容:

in false arm
result = 100

这里有一篇关于他们所做的事情的小文章evaluate@AlexLarionov谢谢,我将阅读它。它没有解释为什么我可以用代码块来分隔arm而不使用逗号。如果使用大括号,匹配arm末尾的逗号是可选的。rust解析器/标记器可以明确地解析匹配臂(带逗号或不带逗号)。看这里:逗号是可选的,这不应该是注释;答案中需要包含重要信息。正如目前所写的,这个建议的答案并没有解决被问到的问题answer@JCorriveau请注意,如果您在代码上运行
rustfmt
,它将删除块中使用的无关逗号。