考虑一个名为的文件weird1.rb
:
load 'weird2.rb'
和weird2.rb
:
p = gets.chomp
puts "Got input: #{p}"
当我weird1.rb
不带任何参数运行时,gets
从控制台读取用户的输入:
c:\a\ruby>weird1.rb
test
Got input: test
当我使用参数运行它时,gets
从给定的参数中读取(someRandomArg
和weird2.rb
,分别在以下情况下):
c:\a\ruby>weird1.rb someRandomArg
weird2.rb:1:in `gets': No such file or directory - someRandomArg (Errno::ENOENT)
c:\a\ruby>weird1.rb weird2.rb
Got input: p = gets.chomp
为什么weird2
从 的论点中读取weird1
?这似乎出乎意料;gets
应该从stdin
而不是文件中读取。发生了什么,我该如何解决?