NamedTuple
NamedTuple (이름 있는 튜플)
여러 값을 하나로 묶되, 각 값에 이름을 붙여서 의미를 분명히 하고 싶을 때 쓰는 것이 NamedTuple이에요. 일반 튜플이 위치로만 값을 구분한다면, NamedTuple은 name: 값 형태로 각 원소에 이름을 달아줘요.
본문
NamedTuple은 보통 이름 있는 튜플 리터럴로 만들어요.
tuple = {name: "Crystal", year: 2011} # NamedTuple(name: String, year: Int32)
tuple[:name] # => "Crystal" (String)
tuple[:year] # => 2011 (Int32)
원소에 접근할 때는 위치(index) 대신 [:name]처럼 이름 키를 사용해요. 이름 있는 튜플 타입을 표기하려면 이렇게 써요.
# x: Int32, y: String을 가지는 named tuple 타입 표기
NamedTuple(x: Int32, y: String)
타입 제약, 제네릭 타입 인자처럼 타입이 기대되는 자리에서는 더 짧은 문법을 쓸 수 있어요. 이 내용은 타입 문법에서 설명해요.
# x: Int32, y: String을 가지는 named tuple들의 배열
Array({x: Int32, y: String})
named tuple의 키는 문자열 리터럴일 수도 있어요.
{"this is a key": 1}
{"this is a key": 1}처럼 키에 공백이 필요한 이름도 문자열 리터럴로 표현할 수 있죠.