【发布时间】:2013-10-23 10:12:27
【问题描述】:
考虑一个名为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 读取,而不是文件。发生了什么,我该如何解决?
【问题讨论】:
-
(顺便说一句,这是问题的一个大大简化的版本;原始代码的目的是在执行不同的文件之前进行一些预设置)
-
@sawa 非常感谢您在那里进行的清理工作,谢谢! (我觉得标题有点模糊,所以我编辑了它)