Escribir una sentencia switch en Ruby
-
Haga coincidir
Rangesen Rubyswitch -
Haga coincidir
Regexen Rubyswitch -
Haga coincidir
Procen 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
switchen la mayoría de los otros lenguajes de programación, la sentenciaswitchde Ruby no requierebreakal final de cadawhen. - La instrucción
switchde Ruby nos permite especificar múltiples valores para cadawhenpara 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