Dyl*_*kow 38
gets将使用Kernel#gets,它首先尝试读取传入的文件的内容ARGV.如果没有文件ARGV,它将使用标准输入(此时它与...相同)STDIN.gets.
注意:正如echristopherson指出的那样,Kernel#gets实际上会回归$stdin,而不是STDIN.但是,除非您分配$stdin给不同的输入流,否则它将STDIN默认为相同.
http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-gets
小智 8
如果你的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} ?"
Run Code Online (Sandbox Code Playgroud)
你在终端跑
$ ruby color.rb blue yellow green
Run Code Online (Sandbox Code Playgroud)
它会抛出一个错误(没有这样的文件错误)
现在用'stdin.gets.chomp'替换'gets.chomp',如下所示
least_fav_color = $stdin.gets.chomp
Run Code Online (Sandbox Code Playgroud)
并在终端中运行以下命令
$ ruby color.rb blue yellow green
Run Code Online (Sandbox Code Playgroud)
然后你的程序运行!!
基本上,一旦你开始调用ARGV(如ARGV的设计),gets.chomp就不能再正常工作了.是时候引进大炮了:$ stdin.gets.chomp
| 归档时间: |
|
| 查看次数: |
23312 次 |
| 最近记录: |