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