两个类似的脚本在这里显示非常奇怪的行为.
A)下面的代码是nil can't be coerced into Fixnum (TypeError):
score = 0
ammount = 4
score += case ammount
when ammount >= 3; 10
when ammount < 3; 1
end
puts score
Run Code Online (Sandbox Code Playgroud)
B)另一个是放入1控制台日志.
score = 0
ammount = 4
score += case ammount
when ammount >= 3; 10
else 1
end
puts score
Run Code Online (Sandbox Code Playgroud)
我希望这两个脚本都输出10到控制台上.我错了吗?为什么?
给定参数时,case语句检查对象是否相等(与调用相同===),可以使用单个值或超出范围.在你的情况下,你并没有真正检查是否相等,但可以像这样写:
score += case
when amount >= 3 then 10
when amount < 3 then 1
end
Run Code Online (Sandbox Code Playgroud)
但是,对于您正在尝试做的事情(一种/或条件),这非常冗长.使用普通if...else或三元语句更简单:
score += amount >= 3 ? 10 : 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |