Project1
标题:
【Ruby】when的判断与==的区别
[打印本页]
作者:
寒冷魔王
时间:
2015-1-29 00:43
标题:
【Ruby】when的判断与==的区别
本帖最后由 寒冷魔王 于 2015-1-29 00:45 编辑
如下代码:
data = Array.new
case data.class
when Array
puts "OK in When Class"
end
p data.class == Array
array = [0,0]
case array
when [0,0]
puts "OK in When Array"
end
p array == [0,0]
复制代码
结果:
true
OK in When Array
true
复制代码
该代码在Ruby 2.2.0 on Linux下测试。
作者:
RyanBern
时间:
2015-1-29 09:21
本帖最后由 RyanBern 于 2015-1-29 09:24 编辑
case~when进行判断利用的运算符为'===',不是'=='
case data
when Array
puts "OK"
end
复制代码
默认情况下,'==='的含义和'=='相同,但是如果进行了重新定义,二者含义不同。
对于Class类的对象,'==='的含义发生改变。
self === other和other.is_a?(self)功能类似
所以那样用case~when是不对的。
作者:
chd114
时间:
2015-1-30 10:05
我一直以为when和==的区别就是
x=rand(5)
case x
when 0,1,2,3
p 520
end
if x==0 or x==1 or x==2 or x==3
p 520
end
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1