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'
endLas 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'
endGuardas 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'
endVarias 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'
endAsociar 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}")
endCapturar 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
endBuscar 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)
endGuardas 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'
endCombinar 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}")
endOrden 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'
endComprobació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/unlessrefinan 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
endPreguntas 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
- Conceptos básicos de case/in
- Patrones de arrays y hashes
- Patrones find y guardas
- Casos de uso prácticos