gpt4 book ai didi

rust - 为什么函数调用中的尾随逗号不是语法错误?

转载 作者:行者123 更新时间:2023-11-29 08:02:21 24 4
gpt4 key购买 nike

我预计此代码会失败,因为逗号充当参数分隔符。没有第二个参数,foo 只接受一个参数。

fn foo(_a: u8) {}

fn main() {
foo(3, );
}

最佳答案

大多数语言都接受以逗号分隔的列表中的尾随逗号,例如参数列表或元组或数组文字。如果您将列表拆分为多行,这将很有帮助,例如

let a = [
0,
1,
2,
3,
];

由于所有行都以逗号结尾,您可以轻松地在编辑器中对行重新排序,并且差异在版本控制中看起来更清晰,尤其是在列表末尾添加更多条目时。这似乎不是允许尾随逗号的有力理由,但由于允许尾随逗号无害,因此作为基本原理就足够了。

请注意,Rust 中的宏调用并不总是允许尾随逗号。

随着时间的推移,其他语言对尾随逗号的使用变得更加宽松。 JavaScript 始终允许在数组文字中使用尾随逗号。他们允许它用于 EcmaScript 5 中的对象文字和 EcmaScript 2017 中的函数参数列表,而标准 JSON 仍然不允许尾随逗号。直到最近,Python 才允许在 *args**kwargs 之后使用尾随逗号,但现在也允许使用逗号。

关于rust - 为什么函数调用中的尾随逗号不是语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53672206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com