0Pricing
Ruby Academy · Lección

Patrones find y guardas

Condiciones en las coincidencias

Patrones find y guardas es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

Condiciones de guarda

Añada una guarda if o unless a un patrón. La rama coincide únicamente cuando tanto el patrón como la condición se cumplen.

case 7
in Integer => n if n.odd?
  puts 'odd integer'
end

Las guardas utilizan variables asociadas

La guarda puede hacer referencia a variables asociadas por el patrón, por lo que puede expresar condiciones complejas sobre los datos coincidentes.

case [4, 9]
in [a, b] if a < b
  puts 'ascending pair'
end

Guardas unless

Una guarda unless coincide cuando la condición es falsa, lo contrario que if.

case 0
in Integer => n unless n.positive?
  puts 'zero or negative'
end

Varias ramas con guardas

Combine guardas en varias ramas para crear una secuencia clara de decisiones.

def grade(score)
  case score
  in Integer => s if s >= 90 then 'A'
  in Integer => s if s >= 70 then 'B'
  else 'C'
  end
end
puts(grade(85))

Patrones de búsqueda

Un patrón de búsqueda [*, x, *] busca un subpatrón en un array en cualquier posición, con splats en ambos extremos.

case [1, 2, 3, 4]
in [*, 3, *]
  puts 'contains a 3'
end

Asociar dentro de una búsqueda

El elemento coincidente de un patrón de búsqueda se puede asociar para capturar el valor encontrado.

case [10, 20, 30]
in [*, x, *] if x > 25
  puts("found #{x}")
end

Capturar los elementos circundantes

Es posible asignar un nombre a ambos splats de un patrón de búsqueda para capturar los elementos anteriores y posteriores a la coincidencia.

case [1, 2, 99, 4, 5]
in [*before, 99, *after]
  p before
  p after
end

Buscar un elemento de un tipo

Los patrones de búsqueda se combinan con patrones de tipo para localizar el primer elemento de un tipo determinado.

case [1, 'hi', 2]
in [*, String => word, *]
  puts(word)
end

Guardas frente a patrones

Exprese en el patrón todo lo que pueda estructuralmente y use guardas solo para las condiciones que los patrones no pueden capturar, como comparaciones numéricas o llamadas a métodos.

case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
  puts 'adult admin'
end

Combinar búsqueda y guarda

Los patrones de búsqueda y las guardas juntos permiten preguntar: ¿hay algún elemento que cumpla esta condición?

numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
  puts("first even-ish hit: #{n}")
end

Orden de las ramas

Las ramas se prueban de arriba abajo; gana la primera coincidencia. Coloque los patrones con guardas más específicos antes que los generales.

case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
end

Comprobación rápida

¿Qué hace el patrón de búsqueda [*, x, *]?

Repaso: patrones de búsqueda y guardas

Ha añadido condiciones y búsquedas a la coincidencia:

  • Las guardas if / unless refinan un patrón
  • Las guardas pueden usar variables asociadas
  • Los patrones de búsqueda [*, x, *] buscan en cualquier posición
  • Se puede asignar un nombre a ambos splats para capturar los elementos circundantes
  • Gana la primera rama coincidente, por lo que el orden es importante
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
end

Preguntas frecuentes

¿La lección «Patrones find y guardas» es gratis?

Sí — el texto completo de «Patrones find y guardas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Patrones find y guardas»?

Condiciones en las coincidencias Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Patrones find y guardas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de case/in
  2. Patrones de arrays y hashes
  3. Patrones find y guardas
  4. Casos de uso prácticos
← Volver a Ruby Academy