2014-03-27 6 views
3

각 필드에 이름을 지정하지 않고 nimrod에 튜플을 선언 할 수 있습니다. 예를 들어 :필드 이름이없는 튜플

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

는하지만 이번이 마지막에는 적용되지 않습니다는

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

이유는 무엇입니까

을 제기? 이것은 의도 된 것입니까? 마지막 필드의 이름을 항상 지정해야하는 이유는 무엇입니까?

답변

6

컴파일러는 실제로 char라는 이름의 필드, string와 튜플로 string 입력 intage 모두와 T2라는 이름의 필드가있는 튜플로 T1을 해석하고, 유형 intage. 즉, 쉼표로 구분 된 목록의 독립형 "유형"은 필드 이름으로 해석됩니다.

이것은 필드 이름의 유효성을 검사하지 않는다는 점에서 컴파일러 버그 (생성자의 필드 이름을 사용할 수 없기 때문에) 일 수 있습니다. 그러나 마지막 요소에 대해서만 형식을 제공해야하는 것은 아닙니다. 형식은 콜론 앞에 쉼표로 구분 된 목록의 모든 요소에 적용됩니다.