jpw*_*ynn 51 ruby switch-statement
你能用ruby做到这一点吗?它似乎"错过"了不平等的案件
case myvar
when myvar < -5
do somethingA
when -5..-3
do special_something_XX
when -2..-1
do special_something_YY
when myvar == 0
do somethingB
when myvar > 0
go somethingC
end
Run Code Online (Sandbox Code Playgroud)
too*_*kit 100
您正在混合两种不同类型的案例陈述:
case var
when 1
dosomething
when 2..3
doSomethingElse
end
case
when var == 1
doSomething
when var < 12
doSomethingElse
end
Run Code Online (Sandbox Code Playgroud)
小智 26
case myvar
when proc { |n| n < -5 }
do somethingA
when -5..-3
do special_something_XX
when -2..-1
do special_something_YY
when proc { |n| n == 0 }
do somethingB
when proc { |n| n > 0 }
go somethingC
end
end
Run Code Online (Sandbox Code Playgroud)
我个人并不相信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
Run Code Online (Sandbox Code Playgroud)
我的首选解决方案如下 在这里,顺序很重要,你必须重复这个myvar,但是要省略案例要困难得多,你不必重复每个边界两次,严格性(<vs <=而不是..vs ...)更加明显.
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26378 次 |
| 最近记录: |