Escribir una sentencia switch en Ruby

Nurudeen Ibrahim 18 abril 2022
  1. Haga coincidir Ranges en Ruby switch
  2. Haga coincidir Regex en Ruby switch
  3. Haga coincidir Proc en Ruby switch
Escribir una sentencia switch en Ruby

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 sentencia switch de Ruby no requiere break al final de cada when.
  • La instrucción switch de Ruby nos permite especificar múltiples valores para cada when 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