これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の6日目の記事です。
1日目の記事で配列が自動拡張されなくてつらいと書いたんですが、配列の範囲外の参照もエラーになります。
array = [0, 1, 2] array[3]
[4337095] *CallStack::unwind:Array(Pointer(Void)) +87 [4336986] *CallStack#initialize<CallStack>:Array(Pointer(Void)) +10 [4336938] *CallStack::new:CallStack +42 [4344863] *Exception +31 [4344797] *IndexError#initialize<IndexError, String>:CallStack +29 [4344737] *IndexError::new<String>:IndexError +97 [4344629] *IndexError::new:IndexError +21 [4333208] *Array(Int32) +120 [4333078] *Array(Int32) +6 [4324271] ??? [4331216] main +32 [139942442764864] __libc_start_main +240 [4321449] _start +41 [0] ???
これは Rubyist にはつらい。
Ruby と同じようにエラーにせずに nil を返して欲しい場合は []?
を使います。
array = [0, 1, 2] array[3]? #=> nil