Escribir una sentencia switch en Ruby
-
Haga coincidir
Ranges
en Rubyswitch
-
Haga coincidir
Regex
en Rubyswitch
-
Haga coincidir
Proc
en Rubyswitch
De manera similar a cómo funciona la declaración if
, la declaración switch
nos permite controlar la ejecución de un código en función de alguna condición específica. Este tutorial verá cómo se usa la instrucción switch
en Ruby.
A continuación se muestra la sintaxis de una instrucción switch
en Ruby.
case argument
when condition
# do something
else
# do something else if nothing else meets the condition
end
Veremos algunas formas básicas comunes de usarlo y luego algunos ejemplos algo complejos que no son tan comunes.
Códigos de ejemplo:
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")
Producción :
Asia
Europe
I don't know
Arriba hay un ejemplo básico de un método que utiliza una sentencia switch
para identificar el continente de un país. Mirando el ejemplo anterior, vale la pena señalar lo siguiente.
- A diferencia de la sentencia
switch
en la mayoría de los otros lenguajes de programación, la sentenciaswitch
de Ruby no requierebreak
al final de cadawhen
. - La instrucción
switch
de Ruby nos permite especificar múltiples valores para cadawhen
para que podamos devolver un resultado si nuestra variable coincide con alguno de los valores. A continuación se muestra un ejemplo.
Códigos de ejemplo:
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")
Producción :
Asia
Europe
Europe
La sentencia switch
de Ruby utiliza el operador ===
para realizar la comparación entre la variable case
y los valores suministrados, es decir, value === argument
. Como resultado, Ruby switch
nos permite hacer comparaciones más inteligentes.
Haga coincidir Ranges
en Ruby switch
En este ejemplo, verificamos si la variable case
proporcionada está incluida en alguno de los Rangos especificados.
Códigos de ejemplo:
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)
Producción :
Falls between 1 & 5
Falls between 6 & 10
Haga coincidir Regex
en Ruby switch
También podemos hacer coincidir expresiones regulares con la variable case
, y eso se muestra en el siguiente ejemplo.
Códigos de ejemplo:
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")
Producción :
ends with 'ary'
ends with 'ber'
Haga coincidir Proc
en Ruby switch
Un Proc
de Ruby encapsula un bloque de código que puede almacenarse en una variable o pasarse. Puede consultar aquí para obtener más explicaciones sobre Ruby Proc
. El siguiente ejemplo muestra cómo se puede usar un Proc
de Ruby en una instrucción switch
.
Códigos de ejemplo:
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)
Producción :
It's odd
It's even