Als Ergebnis des Versuchs herauszufinden, sich nicht zu wiederholen, gab es Fälle, in denen der ursprüngliche Zweck nicht erreicht werden konnte, daher werde ich ihn als Artikel belassen.
Angenommen, Sie möchten nur eine bestimmte Zeichenfolge eingeben. (Im folgenden Fall wird die Eingabe von "0", "1", "2" anhand der if-Anweisung beurteilt.)
input_number = gets.chomp
sample_number = ["0","1","2"]
if input_number == "0" || input_number == "1" || input_number == "2"
puts "Eingabe ist 0,1,Es ist eines von 2."
else
puts "0,1,Ein anderes Zeichen als 2 wurde eingegeben!"
end
Logischer Operator||Es scheint, dass der (oder) Teil lang ist ... Ich versuche es durch Versuch und Irrtum einfacher zu machen.
case1 between?Methode
input_number = gets.chomp
sample_number = ["0","1","2"]
#Die eingegebene Zeichenfolge ist"0"Von"2"Gibt die Wahrheit zurück, ob es dazwischen liegt oder nicht.
t_or_f = input_number.between?("0", "2")
if t_or_f == true
puts "Die eingegebene Zeichenfolge ist 0,1,Ist einer von 2"
else
puts "Andere Charaktere sind enthalten!"
end
Die Anzahl der Variablendefinitionen wurde um eins erhöht. Wenn Sie jedoch mehr Zeichenfolgen akzeptieren möchten, müssen Sie weniger als den logischen Operator hinzufügen oder ändern. Es stellt sich heraus, dass das Refactoring beendet ist und ein weiteres Problem auftritt. Wenn es eine nicht verwandte Zeichenfolge wie ein Alphabet enthält, ist es falsch, aber eine Eingabe wie "0120" oder "1.9" wird als wahr zurückgegeben. Was ist mit dem nächsten?
any?Methode und umfassen?Methode
input_number = gets.chomp
sample_number = ["0","1","2"]
#any?Methode: Gibt true zurück, wenn eine der Bedingungen erfüllt ist, false, wenn keine der Bedingungen erfüllt ist
#Block{}Verarbeitung in ... Probe_numberの配列内の要素をBlock引数nに代入。
#input_Beurteilt, ob das Blockargument n in der Zahl enthalten (enthalten) ist, und gibt wiederholt wahr oder falsch zurück (in diesem Fall dreimal).
t_or_f = sample_number.any? {|n| input_number.include?(n)}
if t_or_f == true
puts "Die eingegebene Zeichenfolge ist 0,1,Ist einer von 2"
else
puts "Andere Charaktere sind enthalten!"
end
In diesem Fall gibt die Eingabezeichenfolge entweder 0, 1 oder 2 zurück und gibt immer true zurück. (Beispiel: 1234 => true, abc0120 => true)
Immerhin der logische Operator||Strenge Eingabe ist die genaueste.
Der erweiterte Ruby in Rails hat anstelle des Ruby-Originals eine __in? -Methode __. In diesem Fall werden nur 0,1,2 akzeptiert, 01 usw. werden nicht bestanden.
in?Methode
input_number = gets.chomp
if input_number.in?(["0", "1", "2"])
puts "Die eingegebene Zeichenfolge ist 0,1,Ist einer von 2"
else
puts "Andere Charaktere sind enthalten!"
end
Recommended Posts