Après avoir essayé de découvrir Ne vous répétez pas, il y a eu des cas où l'objectif initial n'a pas pu être atteint, je vais donc le laisser comme un article.
Par exemple, supposons que vous souhaitiez saisir uniquement une chaîne de caractères spécifique. (Dans le cas suivant, l'entrée de l'un quelconque de "0", "1", "2" est jugée par l'instruction if.)
input_number = gets.chomp
sample_number = ["0","1","2"]
if input_number == "0" || input_number == "1" || input_number == "2"
puts "L'entrée est 0,1,C'est l'un des 2."
else
puts "0,1,Un caractère autre que 2 a été saisi!"
end
Opérateur logique||Il semble que la partie (ou) soit longue ... J'essaye de le rendre plus simple par essais et erreurs.
case1 between?Méthode
input_number = gets.chomp
sample_number = ["0","1","2"]
#La chaîne de caractères saisie est"0"De"2"Renvoie la vérité quant à savoir si c'est entre les deux.
t_or_f = input_number.between?("0", "2")
if t_or_f == true
puts "La chaîne de caractères saisie est 0,1,Est l'un des 2"
else
puts "D'autres personnages sont inclus!"
end
Le nombre de définitions de variables a augmenté de un, mais si vous souhaitez accepter plus de chaînes de caractères, vous devez ajouter ou modifier moins que l'opérateur logique. Il s'avère que le refactoring est terminé et qu'un autre problème se pose. Si elle contient une chaîne de caractères non liée telle qu'un alphabet, elle sera fausse, mais une entrée telle que "0120" ou "1.9" sera renvoyée comme vraie. Et ensuite?
any?Méthode et inclure?Méthode
input_number = gets.chomp
sample_number = ["0","1","2"]
#any?Méthode: renvoie vrai si l'une des conditions est remplie, faux si aucune des conditions n'est remplie
#bloquer{}Traitement en ... échantillon_numberの配列内の要素をbloquer引数nに代入。
#input_Juge si l'argument de bloc n est inclus (inclus) dans le nombre et renvoie vrai ou faux à plusieurs reprises (dans ce cas, 3 fois).
t_or_f = sample_number.any? {|n| input_number.include?(n)}
if t_or_f == true
puts "La chaîne de caractères saisie est 0,1,Est l'un des 2"
else
puts "D'autres personnages sont inclus!"
end
Dans ce cas, si la chaîne de caractères d'entrée contient 0, 1 ou 2, elle retournera toujours true. (Exemple: 1234 => true, abc0120 => true)
Après tout, l'opérateur logique||La saisie stricte est la plus précise.
Le Ruby étendu dans Rails, plutôt que l'original Ruby, a une méthode __in? __. Dans ce cas, seuls 0,1,2 sont acceptés, 01 etc. ne sont pas passés.
in?Méthode
input_number = gets.chomp
if input_number.in?(["0", "1", "2"])
puts "La chaîne de caractères saisie est 0,1,Est l'un des 2"
else
puts "D'autres personnages sont inclus!"
end
Recommended Posts