(ruby)(crystal) rubyとcrystalで違う部分 「コマンドライン引数」

rubyとほぼ同じような書き方が出来るcrystalですが、
当然違う言語なので違う部分も色々とあります、
その一つとして コマンドライン引数の受け方で違いが出てきます。

rubyで 第一引数が無かった場合の判定としては ARGV[0] == nil と書くことが出来ますが、
crystalでは 引数がない所の値を取得しようとすると、Index out of boundsエラーが 発生します、
rubyでは引数が無い部分を指定したらnilが返ってきますが、crystalではそうなりません。

(
  puts("ファイルを指定してください")
  exit(1)
) if ARGV[0] == nil # コマンドライン引数を書かなかった場合、rubyだけしか正常に動かない


crystalで 第○引数の有無の判定は、引数の数がいくつあるかを見て判断することになります、
この書き方なら rubyでも動作します。

(
  puts("ファイルを指定してください")
  exit(1)
) if ARGV.size == 0 # コマンドライン引数を書かなかった場合でも crystalも rubyも 正常に動く
puts(ARGV[0]) # 第一引数がきちんとある状態なら crystalでも ARGV[0]で受け取ることが出来る