2014-03-27 64 views
3

我注意到我可以在nimrod中聲明元組而不用爲每個字段命名。例如:沒有字段名稱的元組

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

但這並不適用於最後提交

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

這是爲什麼?這是打算?爲什麼最後一個字段總是被命名?

回答

6

編譯器實際上解釋T1與命名stringageint類型的兩個和T2爲元組與string命名char字段,字段的元組,和int類型的age。簡而言之,逗號分隔列表中的獨立「類型」被解釋爲字段名稱。

這可能是一個編譯器錯誤(因爲您不能使用字段名稱作爲構造函數),因爲它不驗證字段名稱。但並不是必須僅爲最後一個元素提供類型:該類型將應用於冒號前面逗號分隔列表中的所有元素。