Crystal は深さが不定の配列が作れなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の3日目の記事です。

qiita.com

Ruby の配列は任意の型のオブジェクトが入りますが、Crystal は特定の型しか入りません。

空配列を作ろうとするとエラーになります。

array = []
#=> Syntax error in eval:1: for empty arrays use '[] of ElementType'

空配列を作るには型(クラス)を指定しないといけません。

array = [] of Int32
または
array = Array(Int32).new 

複数の型のオブジェクトが入りうる配列を作るには次のようにします。

array = [] of Int32 | String
または
array = Array(Int32|String).new

配列には必ず要素の型が必要です。ということは、配列の配列の配列…のように深さが不定の配列は作れません。つらい。