Ruby中的ARGV有什麼意義?Ruby中的ARGV有什麼意義?
first, second, third = ARGV
puts "The script is called: #{$0}"
puts "Your first variable is: #{first}"
puts "Your second variable is: #{second}"
puts "Your third variable is: #{third}"
什麼的這點時運行,我需要做的文件:
ruby ex1.rb
,並把在我需要輸入
ruby ex1.rb blah blah blah
第一,第二和第三變量
這對運行該程序的所有人有何益處?因爲我認爲它是可執行的,所以他們無法做到這一點:
user = ARGV.first
prompt = '> '
puts "Hi #{user}, I'm the #{$0} script."
puts "I'd like to ask you a few questions."
puts "Do you like me #{user}?"
print prompt
likes = STDIN.gets.chomp()
puts "Where do you live #{user}?"
print prompt
lives = STDIN.gets.chomp()
puts "What kind of computer do you have?"
print prompt
computer = STDIN.gets.chomp()
puts <<MESSAGE
Alright, so you said #{likes} about liking me.
You live in #{lives}. Not sure where that is.
And you have a #{computer} computer. Nice.
MESSAGE
有人可以向我解釋這個嗎?
「他們無法做到,因爲我認爲它是可執行文件」顯示了思想上的缺陷。如果可執行文件有什麼不同?這只是在操作系統中設置的一小部分,不會影響腳本是否可以接受參數。也許你的意思是腳本會被啓動並與GUI一起使用,但即使如此,腳本也可能接收參數作爲其啓動過程的一部分......這讓我覺得這個問題是錯誤的。 –
在給出的示例中,所有輸入都在運行期間收集,以響應用戶輸入。 ARGV將在運行開始時收集數據,無需用戶輸入。 – JDS
考慮上面代碼的每個「塊」都相當昂貴的情況,運行10秒。你寧願打字,等10s,打字,等10s等等 - 或 - 鍵入,然後等待30秒?有一個例子說明爲什麼在初始執行時提供參數是有用的,而不是在需要時提供參數。 –