Лично я не убежден, что вам было бы лучше с утверждениями if, но если вы хотите найти решение в такой форме:
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
Мое предпочтительное решение следует.Здесь важен порядок, и вы должны повторить myvar
, но гораздо сложнее пропустить случаи, вам не нужно повторять каждую границу дважды, и строгость (<
против <=
вместо ..
против ...
) гораздо более очевидно.
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