Ruby 什么';get.chomp()与STDIN.get.chomp()之间的区别是什么?
这两个命令是相同的,还是有细微的区别Ruby 什么';get.chomp()与STDIN.get.chomp()之间的区别是什么?,ruby,Ruby,这两个命令是相同的,还是有细微的区别 gets将使用内核#gets,它首先尝试读取通过ARGV传入的文件的内容。如果ARGV中没有文件,它将使用标准输入(此时与STDIN.get相同) 注意:正如埃奇里斯托弗森指出的那样,内核#gets实际上会退回到$stdin,而不是stdin。但是,除非您将$stdin分配给不同的输入流,否则默认情况下它将与stdin相同 首先读取.chomp()=readARGV STDIN.gets.chomp()=读取用户的输入 如果ARGV中有内容,默认的get方法
gets
将使用内核#gets
,它首先尝试读取通过ARGV
传入的文件的内容。如果ARGV
中没有文件,它将使用标准输入(此时与STDIN.get
相同)
注意:正如埃奇里斯托弗森指出的那样,内核#gets
实际上会退回到$stdin
,而不是stdin
。但是,除非您将$stdin
分配给不同的输入流,否则默认情况下它将与stdin
相同
首先读取.chomp()
=readARGV
STDIN.gets.chomp()
=读取用户的输入
如果ARGV中有内容,默认的get方法会尝试将第一个作为文件处理并读取
在这种情况下,要读取用户的输入(即stdin),必须使用
如果您的color.rb文件是
first, second, third = ARGV
puts "Your first fav color is: #{first}"
puts "Your second fav color is: #{second}"
puts "Your third fav color is: #{third}"
puts "what is your least fav color?"
least_fav_color = gets.chomp
puts "ok, i get it, you don't like #{least_fav_color} ?"
你在终点站跑步
$ ruby color.rb blue yellow green
它将抛出一个错误(没有这样的文件错误)
现在将下面一行中的“gets.chomp”替换为“stdin.gets.chomp”
least_fav_color = $stdin.gets.chomp
并在终端中运行以下命令
$ ruby color.rb blue yellow green
然后你的程序运行
基本上,一旦您开始从一开始就调用ARGV(正如ARGV设计的那样)gets.chomp再也不能正常工作了。是时候引进大炮兵了:$stdin.gets.chomp谢谢你的解释。很难通过文档中的差异找到答案。它不是又回到了$stdin了吗,它经常和stdin一样吗?这实际上是最简单和最好的答案。这里是红宝石白色的腰带目前,我正在艰难地凿穿红宝石的花岗岩墙壁,这一章让我感到困惑,直到我找到了你的解释。谢谢你的解释!简单明了的例子。谢谢!