配列

badge

配列はもっとも基本的な コレクション(集約) です。 コレクションとは、内部にオブジェクトを複数保持できるオブジェクトのことです。

a = [1, 2, 3] a: [Int; 3] # 型指定: セミコロンの後の数字は要素数 # 要素数がわからない場合は省略できる a: [Int] mut_a = [!1, !2, !3] mut_a[0].inc!() assert mut_a == [2, 2, 3]

配列には、原則として違う型のオブジェクトを入れることはできません。

[1, "a"] # TypeError: 1st element is Int, but 2nd element is Str

しかし、このように要素の型を明示的に指定すると制限を回避できます。

[1: Int or Str, "a"]

しかしこのような場合、基本的には後述する タプル を使うべきです。

(1, "a")

スライス

配列は、複数の値をまとめて取り出すこともできます。これをスライスと呼びます。

l = [1, 2, 3, 4] # Pythonのl[1:3]に相当 assert l[1..<3] == [2, 3] assert l[1..2] == [2, 3] # l[1]と同じ assert l[1..1] == [2] # Pythonのl[::2]に相当 assert l[..].step(2) == [2, 4]

スライスで得られるオブジェクトは配列の(不変)参照です。

print! Typeof l[1..2] # Ref [Int; 4]