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

big*_*ato 7 ruby

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

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

myNumb = Integer(STDIN.gets())
Run Code Online (Sandbox Code Playgroud)

myNumb = Integer(gets.chomp()) 
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 15

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

STDIN.gets
$stdin.gets
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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


Mic*_*ohl 4

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