10

RubySTDIN.gets()との違いは何ですか?gets.chomp()どちらもユーザーから生の入力を取得していませんか?

副次的な質問:入力を整数に変換したい場合は、

myNumb = Integer(STDIN.gets())

myNumb = Integer(gets.chomp()) 
4

3 に答える 3

18

gets実際にはKernel#getsです。引数として渡されたファイルから読み取ります。引数が存在しない場合は、標準入力から読み取ります。標準入力からのみ読み取りたい場合は、それについてより明確にする必要があります。

STDIN.gets
$stdin.gets

変換に関しては、私は通常String#to_iを使用します。改行をうまく処理します。

于 2012-08-20T16:38:23.333 に答える
4

ここで説明する最も簡単な方法はInteger(gets)Integer()末尾の改行を無視するため、chomp不要です。また、スクリプトに引数がない場合にKernel#getsSTDINが実行するので、レシーバーとして明示的に指定する必要はありません。

于 2012-08-20T16:33:32.703 に答える
4

ARGVに何かがある場合、デフォルトのgetsメソッドは最初のものをファイルとして扱い、そこから読み取ろうとするためです。このような状況でユーザーの入力(つまり、stdin)から読み取るには、STDIN.getsを明示的に使用する必要があります。

于 2014-02-20T13:22:42.060 に答える