没有字段名称的元组

时间:2014-03-27 13:51:15

标签: nimrod nim

我注意到我可以在nimrod中声明元组而不为每个字段命名。例如:

type T1 = tuple[string, age: int]
type T2 = tuple[char, string, age: int]

但这并不适用于最后提交的

type T3 = tuple[string, int] # compilation error

为什么?这是有意的吗?为什么总是要命名最后一个字段?

1 个答案:

答案 0 :(得分:6)

编译器实际上将T1解释为具有名为stringage的字段的元组,其类型为intT2,作为具有名为{的字段的元组类型为char的{​​1}},stringage。简而言之,逗号分隔列表中的独立“类型”被解释为字段名称。

这可能是编译器错误(因为您不能使用构造函数的字段名称),因为它不验证字段名称。但并不是你必须只为最后一个元素提供一个类型:该类型将应用于冒号前面的逗号分隔列表中的所有元素。