gpt4 book ai didi

syntax - 为什么以及何时应该在 block 的末尾使用逗号?

转载 作者:行者123 更新时间:2023-11-29 07:49:22 27 4
gpt4 key购买 nike

在 Rust 中有很多情况下代码块可以以逗号或不以逗号结尾。例如:

enum WithoutComma 
{
x,
y
}

enum WithComma
{
x,
y,
}

match 等还有其他示例。似乎两种变体都导致相同的结果。我知道添加或删除逗号改变行为的唯一情况是 1 元素元组声明(不是 block ):

let just_int = (5);
let tuple = (5,);

为什么在 block 的末尾可以使用或不使用逗号?为什么语言中存在这种二元论,其原因是什么?

最佳答案

正如您所说,唯一需要尾随逗号的是 1 元组模式、类型和构造 let (x,): (Type,) = (1,)。在其他任何地方,尾随逗号都是可选的,没有任何作用,但出于以下几个原因允许使用:

  • 它使宏更简单:无需注意不要在一系列项目的末尾插入逗号。
  • 它在扩展事物列表时使差异更好,例如添加一个变体

    enum Foo {
    Bar
    }

    给予

    enum Foo {
    Bar,
    Baz
    }

    它正在改变两行(即 git 之类的工具将显示已修改的 Bar 行,以及插入的行),即使实际上只有第二行任何有趣的变化。如果 Bar 以尾随逗号开头,然后在其后插入 Baz, 就可以了,只更改了一行。

它们不是必需的(1 元组除外),因为那会很奇怪(IMO),例如

fn foo(x: u16,) -> (u8, u8,) {
(bar(x,), baz(x,),)
}

(我想对于 enum/struct 声明来说看起来不那么奇怪,但是,能够省略它仍然很好。)

关于syntax - 为什么以及何时应该在 block 的末尾使用逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28163772/

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