Array

Array는 타입이 T인 원소들을 포함하는 제너릭 타입입니다. 배열 리터럴을 통해 보통 생성합니다.

[1, 2, 3]         # Array(Int32)
[1, "안녕", 'x'] # Array(Int32 | String | Char)

배열은 혼합 타입을 가질 수 있습니다. 이는 곧 T가 타입의 공용체라는 뜻입니다. 이는 T를 특정하거나 배열 리터럴을 사용함으로써, 배열이 생성되는 시점에 결정됩니다. 후자의 경우, T는 배열 리터럴의 원소들의 공용체입니다.

빈 배열을 만들 때는 항상 T를 특정해야 합니다.

[] of Int32 # Array(Int32).new와 동일
[]          # 문법 오류

문자열 배열

문자열의 배열은 특수한 문법으로도 만들 수 있습니다.

%w(one two three) # ["one", "two", "three"]

기호 배열

기호의 배열은 특수한 문법으로도 만들 수 있습니다.

%i(one two three) # [:one, :two, :three]

배열류 타입

다른 타입에서도 배열 리터럴 문법을 사용할 수 있습니다. 단, 그 타입이 인자 없는 new 메서드와 << 메서드를 정의하는 경우에 한합니다.

MyType{1, 2, 3}

MyType이 제너릭이 아니라면, 위 코드는 다음과 동일합니다.

tmp = MyType.new
tmp << 1
tmp << 2
tmp << 3
tmp

MyType이 제너릭이라면, 위 코드는 다음과 동일합니다.

tmp = MyType(typeof(1, 2, 3)).new
tmp << 1
tmp << 2
tmp << 3
tmp

제너릭 타입인 경우 타입 인자를 특정할 수도 있습니다.

MyType(Int32 | String) {1, 2, "foo"}

results matching ""

    No results matching ""