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

因为如果 ARGV 中有东西,默认的 gets 方法会尝试将第一个文件视为文件并从中读取。在这种情况下,要从用户的输入(即标准输入)中读取,您必须明确使用它 STDIN.gets。

于 2014-02-20T13:22:42.060 回答
4

做你在这里描述的最简单的方法是Integer(gets),因为Integer()忽略了尾随的换行符,所以chomp没有必要。也不需要明确指定为接收者,因为如果脚本没有参数,STDIN这就是Kernel#gets将执行的操作。

于 2012-08-20T16:33:32.703 回答