我希望此代码失败,因为逗号充当参数分隔符。没有第二个参数,foo
仅接受一个参数。
fn foo(_a: u8) {}
fn main() {
foo(3, );
}
答案 0 :(得分:7)
大多数语言都接受逗号分隔的列表中的尾部逗号,例如参数列表或元组或数组文字。如果您将列表分成多行,例如,
let a = [
0,
1,
2,
3,
];
由于所有行均以逗号结尾,因此您可以轻松地在编辑器中对行进行重新排序,并且diff在版本控制中看起来更清晰,尤其是在列表末尾添加更多条目时。这似乎不是允许使用逗号结尾的强烈理由,但是由于允许使用逗号永远不会造成伤害,因此从理论上讲已经足够了。
请注意,Rust中的宏调用并不总是允许尾随逗号。
随着时间的流逝,其他语言对尾随逗号的使用越来越宽容。 JavaScript始终在数组文字中允许使用逗号结尾。他们允许EcmaScript 5中的对象文字和EcmaScript 2017中的函数参数列表使用它,而标准JSON仍然不允许尾随逗号。直到最近,Python都不允许*args
和**kwargs
之后的逗号结尾,但现在也允许它们。