Ruby:STDIN.gets()和gets.chomp()之间有什么区别?

Ruby中的STDIN.gets()gets.chomp()什么区别? 他们不是都从用户那里检索原始输入吗?

问题:如果我想将他们的输入转换为整数,我该怎么做

 myNumb = Integer(STDIN.gets()) 

 myNumb = Integer(gets.chomp()) 

执行此处描述的最简单方法是Integer(gets) ,因为Integer()忽略尾随换行符,因此chomp是不必要的。 也没有必要明确指定STDIN作为接收器,因为如果脚本没有参数, Kernel#将会执行的操作。

gets实际上是Kernel#gets 。 它从作为参数传递的文件中读取,或者,如果不存在参数,则从标准输入读取。 如果您只想从标准输入中读取,那么您应该更加明确它。

 STDIN.gets $stdin.gets 

至于转换,我通常使用String#to_i 。 它处理换行就好了。

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