我注意到我可以在nimrod中声明元组而不为每个字段命名。例如:
type T1 = tuple[string, age: int]
type T2 = tuple[char, string, age: int]
但这并不适用于最后提交的
type T3 = tuple[string, int] # compilation error
为什么?这是有意的吗?为什么总是要命名最后一个字段?
答案 0 :(得分:6)
编译器实际上将T1
解释为具有名为string
和age
的字段的元组,其类型为int
和T2
,作为具有名为{的字段的元组类型为char
的{1}},string
和age
。简而言之,逗号分隔列表中的独立“类型”被解释为字段名称。
这可能是编译器错误(因为您不能使用构造函数的字段名称),因为它不验证字段名称。但并不是你必须只为最后一个元素提供一个类型:该类型将应用于冒号前面的逗号分隔列表中的所有元素。