Ruby SI aucun ARGV donné
C'est mon code:
if ARGV[0] == false
puts "Usage: ./script.rb argument"
exit
end
print "Yey we got an argument: " ARGV[0]
Mais je ne peux pas faire le code de vérifier si ARGV[0] est donné ou pas, comment dois-je faire ?
source d'informationauteur Ba7a7chy
Vous devez vous connecter pour publier un commentaire.
Vérifier si il est
empty?
(ou vérifier sa longueur):Envisager d'utiliser l'un quelconque des Rubis argument de ligne de commande d'analyseurs, comme OptionParser.
La façon la plus simple de traiter les arguments de position (autres qu'à l'aide d'un joyau de le faire) est de majune à une:
Un argument manquant sera nul. Nous allons l'exploiter, pour donner arg2 une valeur par défaut:
Vérification pour un argument obligatoire est trivial:
Il est également facile de voir si un trop grand nombre d'arguments ont été fournies:
Je me rends compte, une bonne solution est déjà donné, mais personne n'a mentionné la vraie raison pour laquelle votre exemple n'a pas fonctionné.
De la question avec votre code d'exemple est que si il n'y a aucun arguments,
ARGV[0]
sera de retournil
etnil == false
est faux.nil
est "falsy", mais pas égal à fausse. Ce que vous pourriez avoir à faire:Qui aurait travaillé, parce que cette déclaration dépend maintenant de falsyness, plutôt que sur l'égalité réelle
false
.Mais n'utilisez pas ce code, il est beaucoup plus claire si vous indiquez votre intention réelle, qui est ce que vous voulez savoir s'il y a des arguments (au lieu de savoir si le premier argument est falsy). Il faut donc utiliser le code d'autres ont suggéré de:
Vous pouvez vérifier la durée de
ARGV
. Si elle a zéro éléments, puisARGV[0]
n'a pas été donné.Pour vérifier si ARGV[0] (ou plus args) est donné ou pas:
Vous pouvez également utiliser ARGV.est-il vide? (@DaveNewton réponse)
Voici ce que je fais:
Quelqu'un d'autre a suggéré ceci:
Ce qui est faux, puisque toute valeur fausse entraînera
defaultvalue
être affecté, par exemple: