no estoy personalmente convencido de que no sería mejor con sentencias if, pero si quieres una solución en esa forma:
Inf = 1.0/0
case myvar
when -Inf..-5
do somethingA
when -5..-3
do special_something_XX
when -2..-1
do special_something_YY
when 0
do somethingB
when 0..Inf
do somethingC
end
Mi solución preferida sigue. Aquí importa el orden y tienes que repetir el myvar
, pero es mucho más difícil dejar de lado los casos, no tienes que repetir cada límite dos veces y el rigor (<
frente a <=
en lugar de ..
frente a ...
) es mucho más obvio.
if myvar <= -5
# less than -5
elsif myvar <= -3
# between -5 and -3
elsif myvar <= -1
# between -3 and -1
elsif myvar <= 0
# between -1 and 0
else
# larger than 0
end
Puede utilizar expresiones regulares para atrapar a los diferentes casos vez – Flexo
@Flexo: ¿Su aprobación? ¿Manejar la notación científica? –