-3
votes

Comment puis-je corriger correctement cette sortie de fichier rubis?

Utilisation de ce format de code:

$ ruby country_name.rb
Code not specified
$ ruby country_name.rb ca
Not match
$ ruby country_name.rb us
United States
$ ruby country_name.rb mx
Mexico


3 commentaires

Nous ne fournissons pas de solutions d'examen / d'entretien ici, mieux vous essayez de poster votre problème, la réponse sera fournie simplement pour décrire leur intelligence et obtenir une amélioration, mais pas pour votre aide directe


Je suis désolé. Je ne suis pas sûr de comprendre. Je suis assez nouveau pour empiler débordement.


FYI, "pas le match" est une sorte d'anglais cassé. (Pas sûr s'il est typique de l'énancrish japonais.) Il devrait être soit "ne correspond pas" ni "pas de match". Mais j'espère que vous ne changez pas la question puisque vous avez déjà des réponses.


3 Réponses :


0
votes

Premièrement, nommez le chemin de votre code comme pays_name.rb . Ensuite, définissez pays.name comme: xxx


0 commentaires

0
votes

Autre option, vérifiant le code avant d'appeler la méthode:

class Country
  # no changes here

  def self.name(code)
    return "Not found" unless CODE_TO_NAME.has_key? code
    CODE_TO_NAME[code]
  end
end

code = ARGV[0]
abort("Code not specified") unless code
puts Country.name(code.to_sym)


1 commentaires

Ce n'est pas un "code non fourni", mais "code non spécifié".



1
votes

Donc, il y a trois cas, nous devons nous soucier de:

  1. L'utilisateur fournit aucun code
  2. L'utilisateur fournit un code qui n'est pas dans la base de données
  3. L'utilisateur fournit un code dans la base de données

    Dans le premier cas, argv.first sera nil . Nous pouvons ajouter une touche nil sur code_to_name avec le message approprié.

    dans le second cas, indexation dans code_to_name renvoyer la valeur par défaut, nous pouvons donc définir la valeur par défaut sur le message approprié.

    Dans le troisième cas, le code que nous obtenons de la ligne de commande sera une chaîne , pas un symbole , donc si nous modifions les touches dans code_to_name à String S, nous pouvons indexer dans code_to_name directement sans aucun conversions. xxx


0 commentaires