number = -5
case number
when number < 0
return "Please enter a number greater than 0."
when 0..1
return false
when 2
return true
end
...
我原以为它会返回“请输入一个大于 0 的数字”,但它却返回了 nil。这是为什么?如何检查数字是否小于 0?
最佳答案
当你给case
一个变量时, 它与每个 when
进行比较子句与 ===
方法。第一个===
返回 true
将是执行的分支。
在你的例子中,number < 0
正在评估 true
, 和 -5 === true
是假的!
你想要做的就是离开 number
关闭 case
,并使所有的when
子句 bool 值:
case
when number < 0
return "Please enter a number greater than 0."
when number.between?(0, 1)
return false
when number == 2
return true
end
或者保留数字,但所有 when
您可以比较的 s 值:
case number
when -Float::INFINITY..0 # or (-1.0/0)..0
return "Please enter a number greater than 0."
when 0..1
return false
when 2
return true
end
关于ruby - 使用大小写/检查负数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982687/