Aquí, la sentencia case devuelve :third_value
ya que surface
es estrictamente mayor que 130.0
.
Si reasignamos surface = 130.0
entonces nuestra sentencia case
devuelve :second_value
– igual que los rangos de enteros.
Nota que usamos la constante Float::INFINITY
para terminar nuestro último rango.
Esto es equivalente a cualquier valor por encima de 130.0
.
Por último, echemos un vistazo a la noción de rangos infinitos – Esta noción ha sido introducida en Ruby 2.6.0.
En la línea 6, el rango omite explícitamente el operando derecho.
Ruby interpreta esto como lo siguiente: 130..Float::INFINITY
Esto nos permite evitar llamar implícitamente al para terminar nuestro rango.
Así que aquí, el valor de surface
coincide con esta comparación y la sentencia case
devuelve :third_value
.
¡Voilà!