コマンドライン引数からオプションを受け取る
コマンドライン引数の1つ目の要素の先頭が'-'だった場合、
その要素をオプションと判断する。
ここには以下のように書いてあった。
opt = ARGV[0][0] == ?- ? ARGV.shift : ''
?-ってなんぞや?と思ったら、
'-'の文字コードという意味らしい。
そういえば最近、FizzBuzz問題で?dというのを見たことがあったっけ。
あれもdの文字コードって意味だった。
で、「?-って分かりにくいなー。'-'じゃダメなの?」と思い、
以下のように書き直して試してみる。
opt = ARGV[0][0] == '-' ? ARGV.shift : ''
そしたらエラーが出る。
test.rb:5:in `gets': No such file or directory - -s (Errno::ENOENT) from test.rb:5
うーん。ダメなのか。。
文字列としては見てくれてないのかな?
よく分からない。
じゃあこれでどうだ。ということでまた別のを試してみる。
opt = ARGV[0][0].to_s == '-' ? ARGV.shift : ''
また同じエラーが出る。
実際にコマンドラインオプションが必要になったときは、
optparseで処理するからいいとしても、
なんでこうなるのか分からなくてスッキリしない。
追記
バリケンの中の人からコメントで教えてもらい、
Integer#chrを使った書き方もできることを知った。
(どうもありがとうございました。)
opt = ARGV[0][0].chr == '-' ? ARGV.shift : ''