Schreiben einer switch-Anweisung in Ruby

Nurudeen Ibrahim 18 April 2022
  1. Match Ranges in Ruby switch
  2. Match Regex in Ruby switch
  3. Match Proc in Ruby switch
Schreiben einer switch-Anweisung in Ruby

Ähnlich wie die if-Anweisung funktioniert, ermöglicht uns die switch-Anweisung, die Ausführung eines Codes basierend auf einer bestimmten Bedingung zu steuern. In diesem Tutorial wird gezeigt, wie die Anweisung switch in Ruby verwendet wird.

Unten ist die Syntax für eine switch-Anweisung in Ruby.

case argument
when condition
  # do something
else
  # do something else if nothing else meets the condition
end

Wir werden uns einige allgemeine grundlegende Verwendungsmöglichkeiten ansehen und dann einige etwas komplexe Beispiele, die nicht so häufig vorkommen.

Beispielcodes:

def continent_identifier(country)
  case country
  when "Nigeria"
    puts "Africa"
  when "Netherlands"
    puts "Europe"
  when "India"
    puts "Asia"
  else
    puts "I don't know"
  end
end

continent_identifier("India")
continent_identifier("Netherlands")
continent_identifier("Germany")

Ausgabe:

Asia
Europe
I don't know

Oben ist ein einfaches Beispiel einer Methode, die eine switch-Anweisung verwendet, um den Kontinent eines Landes zu identifizieren. Betrachtet man das obige Beispiel, ist Folgendes erwähnenswert.

  • Im Gegensatz zur switch-Anweisung in den meisten anderen Programmiersprachen erfordert die switch-Anweisung von Ruby kein break am Ende jedes when.
  • Die switch-Anweisung von Ruby erlaubt es uns, mehrere Werte für jedes when anzugeben, sodass wir ein Ergebnis zurückgeben können, wenn unsere Variable mit einem der Werte übereinstimmt. Ein Beispiel ist unten gezeigt.

Beispielcodes:

def continent_identifier(country)
  case country
  when "Nigeria"
    puts "Africa"
  when "Netherlands", "Germany"
    puts "Europe"
  when "India"
    puts "Asia"
  else
    puts "I don't know"
  end
end

continent_identifier("India")
continent_identifier("Netherlands")
continent_identifier("Germany")

Ausgabe:

Asia
Europe
Europe

Rubys switch-Anweisung unter der Haube verwendet den ===-Operator, um den Vergleich zwischen der case-Variablen und den gelieferten Werten durchzuführen, d. h. value === argument. Infolgedessen ermöglicht uns Ruby switch, cleverere Vergleiche anzustellen.

Match Ranges in Ruby switch

In diesem Beispiel prüfen wir, ob die angegebene case-Variable in einem der angegebenen Ranges enthalten ist.

Beispielcodes:

def check_number(n)
  case n
  when 1..5
    puts "Falls between 1 & 5"
  when 6..10
    puts "Falls between 6 & 10"
  end
end

check_number(3)
check_number(7)

Ausgabe:

Falls between 1 & 5
Falls between 6 & 10

Match Regex in Ruby switch

Wir können auch reguläre Ausdrücke mit der Variable case abgleichen, und das wird im folgenden Beispiel gezeigt.

Beispielcodes:

def month_indentifier(month)
  case month
  when /ber$/
    puts "ends with 'ber'"
  when /ary$/
    puts "ends with 'ary'"
  end
end

month_indentifier("February")
month_indentifier("November")

Ausgabe:

ends with 'ary'
ends with 'ber'

Match Proc in Ruby switch

Ein Ruby Proc kapselt einen Codeblock, der in einer Variablen gespeichert oder herumgereicht werden kann. Weitere Erklärungen zu Ruby Proc finden Sie hier. Das folgende Beispiel zeigt, wie ein Ruby-Proc in einer switch-Anweisung verwendet werden kann.

Beispielcodes:

def check_number(number)
  case number
  when -> (n) { n.even? }
    puts "It's even"
  when -> (n) { n.odd? }
    puts "It's odd"
  end
end

check_number(3)
check_number(6)

Ausgabe:

It's odd
It's even