我找到了使用 (1..4)
fn main() {
for v in (1..4) {
println!("{}", v);
}
}
Run Code Online (Sandbox Code Playgroud)
和 {1..4}
fn main() {
for v in {1..4} {
println!("{}", v);
}
}
Run Code Online (Sandbox Code Playgroud)
获得相同的结果." (1..4)"和" {1..4}"迭代之间是否有任何不同的语义?
Mas*_*ara 10
它们生成相同的迭代器.你甚至可以省略括号/括号:
fn main() {
for v in 1..4 {
println!("{}", v);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用()或包含表达式{}.但是有一点不同:{}创建一个块,你可以在其中编写语句(如let).解析表达式的方式也有非常细微的差别.编辑:我发现了一篇博客文章,描述了强制和借助如何工作的另一个区别.
()如果您不需要陈述,通常是首选.
没有真正有用的区别.括号和大括号都算作单个表达式和函数来改变优先级.我很确定它们的解析规则略有不同,但在那一点上我猜有更清晰的编写代码的方法.
请注意,在您的示例中,惯用的方法是既不使用:
fn main() {
for v in 1..4 {
println!("{}", v);
}
}
Run Code Online (Sandbox Code Playgroud)
在需要的时候,我觉得我只见过括号,从不括号:
fn main() {
println!("{}", (1..4).count());
}
Run Code Online (Sandbox Code Playgroud)
在极少数情况下,花括号可提供更多动力.由于它们用于启动新范围,因此您可以使用它们在某些棘手的位置"手动"转移所有权.出于所描述的简单迭代器的目的,不会有任何明显的差异.