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]で受け取ることが出来る