2014-12-10 2 views
2
filename = ARGV.first 

txt = open(filename) 

puts "Here's your file #{filename}:" 
print txt.read 

print "Type the filename again: " 
file_again = $stdin.gets.chomp 

Вот мой вопрос, если я изменю его gets.chomp не работает почему?

txt_again = open(file_again) 

print txt_again.read 

В чем разница между gets.chomp и $stdin.chomp

+0

Вы видели это [SO-Question1] (http://stackoverflow.com/questions/12041492/ruby-whats -the-difference-between-stdin-gets-and-gets-chomp) и [SO-Question2] (http://stackoverflow.com/questions/10523536/whats-the-difference-between-gets-chomp-vs- stdin-gets-chomp) –

+2

http://stackoverflow.com/questions/10523536/whats-the-difference-between-gets-chomp-vs-stdin-gets-chomp имеет ответ с точной разницей. –

ответ

1

согласно Kernel#gets docs (курсив):

Возвращает (и присваивает $ _) следующая строка из списка файлов в ARGV (или $ *) или со стандартного ввода, если в командной строке нет файлов.

В вашем случае, ARGV не пусто, так Kernel#gets относится к нему:

Смежные вопросы