2015-04-03 60 views
4

我是編程新手,通過Ruby Ruby The Hard Way書籍開始使用Ruby。我正在練習13,並且只是在同一個腳本中利用ARGV和gets.chomp。我的代碼如下:Ruby認不出gets.chomp,我想?

first, second, third = ARGV 

puts "Your first variable is: #{first}" 
puts "Your second variable is: #{second}" 
puts "Your third is: #{third}" 

print "Was that so difficult?" 
answer = gets.chomp 
print answer 

顯然,這不是那麼困難的腳本的,但是當我運行它,我不斷收到此錯誤:「ex13.rb:在‘獲取’:沒有這樣的文件或目錄@ rb_sysopen - '然後從ex13.rb:8:'gets'從ex13.rb:8:在「

中打印用戶在啓動腳本時輸入的第一個argv(Errno :: ENOENT)幫助將不勝感激。

回答

5

is what gets does。引用:「(gets)從ARGV(或$ *)中的文件列表中返回(並分配給$ _)下一行,或者如果命令行中沒有文件,則從標準輸入中返回。

您可以使用$stdin.gets,或確保ARGV爲空:ARGV.clear使用前gets

+0

我完全不理解這一點,但ARGV.clear之前得到了工作。我只是想完全像書中那樣,在練習之後出現了一個「常見的學生問題」部分,他們說他們不能將ARGV和gets.chomp結合起來。編寫者的迴應是「在這個腳本的最後使用gets.chomp獲取一些內容然後打印它」。 - 對此的任何解釋?我只是有點困惑。並感謝你的幫助,我很感激。 – RoflWaffle17 2015-04-03 17:19:15

+0

Ruby困難的方式是直接翻譯Python的難題。在下一章中,他們使用$ stdin.gets,沒有解釋。他們也使用Python的「」「,並不在提示行上使用」print「,它有點草率。 – steenslag 2015-04-03 21:03:58