RubySTDIN.gets()
との違いは何ですか?gets.chomp()
どちらもユーザーから生の入力を取得していませんか?
副次的な質問:入力を整数に変換したい場合は、
myNumb = Integer(STDIN.gets())
と
myNumb = Integer(gets.chomp())
RubySTDIN.gets()
との違いは何ですか?gets.chomp()
どちらもユーザーから生の入力を取得していませんか?
副次的な質問:入力を整数に変換したい場合は、
myNumb = Integer(STDIN.gets())
と
myNumb = Integer(gets.chomp())
gets
実際にはKernel#getsです。引数として渡されたファイルから読み取ります。引数が存在しない場合は、標準入力から読み取ります。標準入力からのみ読み取りたい場合は、それについてより明確にする必要があります。
STDIN.gets
$stdin.gets
変換に関しては、私は通常String#to_iを使用します。改行をうまく処理します。
ここで説明する最も簡単な方法はInteger(gets)
、Integer()
末尾の改行を無視するため、chomp
不要です。また、スクリプトに引数がない場合にKernel#getsSTDIN
が実行するので、レシーバーとして明示的に指定する必要はありません。
ARGVに何かがある場合、デフォルトのgetsメソッドは最初のものをファイルとして扱い、そこから読み取ろうとするためです。このような状況でユーザーの入力(つまり、stdin)から読み取るには、STDIN.getsを明示的に使用する必要があります。