Quel est le point de ARGV en Ruby?

Quel est le point de ARGV en Ruby?

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}"

Quel est le point de ce moment exécuter le fichier que je dois faire:

ruby ex1.rb

et de mettre dans le premier, deuxième et troisième variables j'ai besoin de taper dans

ruby ex1.rb blah blah blah

Comment cet avantage, la personne qui exécute le programme? Ils ne peuvent pas le faire de toute façon puisque je suppose que c'est un exécutable:

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

Quelqu'un peut-il expliquer cela à moi?

  • "Ils ne peuvent pas le faire de toute façon puisque je suppose que c'est un exécutable" montre une faille dans la pensée. Quelle est la différence de quelque chose faire si c'est de l'exécutable? C'est simplement un peu définie dans l'OS et n'affecte pas de savoir si un script peut accepter des paramètres. Peut-être que vous avez voulu dire le script sera lancé et utilisé avec une interface graphique, mais, même alors, il est possible que le script pour recevoir les paramètres dans le cadre de son processus de démarrage... ce qui me fait penser à toute cette question est fallacieux.
  • Dans l'exemple donné, tous les commentaires sont rassemblées au cours de l'exécution, en réponse à une entrée utilisateur. ARGV est de recueillir des données au début de l'exécuter, sans intervention de l'utilisateur.
  • Prenons le cas lors de chaque "bloc" de votre code ci-dessus est assez cher, et prend par exemple 10 secondes pour s'exécuter. Seriez-vous plutôt du type, attendre 10s, type, attendre 10s, etc... -ou de type, puis attendre 30 secondes? Il y a un exemple de pourquoi il est utile de fournir des arguments à l'exécution initiale, plutôt que comme et quand ils sont nécessaires.
InformationsquelleAutor Jason | 2012-11-11