我执行以下操作,并评估为false
:
MyObject.new.class === MyObject
然而,
MyObject.new.class == MyObject
评估为true
。有更多Ruby背景的人可以向我解释这个问题吗?如果可以将==
用于此目的吗?
答案 0 :(得分:15)
在Ruby中,===
不是==
的更严格版本,就像在其他一些语言中一样。
===
方法有几个含义:
(1..10) === 5 # => true
p MyObject.new.class === MyObject.new # true; it's the same as
p MyObject.new.is_a? MyObject
/\w+/ === "Ruby"
year = 2011
case year
when 1901..2000
puts 'Second millennium'
when 2001..2999
puts 'Third millennium'
end
ri ===
MyObject.new.class == MyObject
只是一个正常的相等测试(MyObject是一个类对象,而MyObject.new.class是同一个类对象)