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

时间:2012-08-20 16:29:29

标签: ruby

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

方面的问题:如果我想将他们的输入转换为整数,我可以吗

myNumb = Integer(STDIN.gets())

myNumb = Integer(gets.chomp()) 

3 个答案:

答案 0 :(得分:15)

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

STDIN.gets
$stdin.gets

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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