AD

¿Ya dominas lo básico? Un curso estructurado de Ruby es la vía rápida para dar el salto.

Ver cursos de Ruby en Udemy

Enlace de afiliado. No te cuesta nada extra.

💎Lecciones de Ruby
Lección 29 / 68

Funciones de orden superior (pasar un bloque)

En esta lección pasarás un trozo de comportamiento como si fuera un dato.

Muchos métodos de Ruby aceptan un bloque que decide cómo hacen su trabajo. sort con un bloque de dos parámetros compara los elementos a tu manera; el operador <=> devuelve -1, 0 o 1 según cuál sea mayor, y basta con invertir el orden de los operandos para ordenar al revés.

El código de ejemplo ordena unos números de mayor a menor.

Para ordenar por un criterio calculado, sort_by es mejor opción que sort con bloque: personas.sort_by { |p| p.edad } calcula la clave una vez por elemento en lugar de en cada comparación, y además se lee mucho mejor. Con listas grandes la diferencia es apreciable.

Los bloques están en el corazón de Ruby y aparecen en todas partes: File.open con bloque cierra el archivo solo al terminar, aunque haya una excepción por medio. Ese patrón —«te presto el recurso, haz lo tuyo y yo me encargo de recogerlo»— es una de las cosas que más agradable hace el lenguaje.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Ruby directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)