1
我試圖利用紅寶石方法kind_of?
和is_a?
。據我所知,它們是彼此的同義詞。Ruby kind_of?和is_a?返回false爲子類
我有一個類Child
的對象。撥打Child.ancestors
的電話會返回一個數組列表[Child, #<Module>, Parent, ...]
。但是,致電Child.new.is_a?(Parent)
或Child.new.kind_of?(Parent)
會返回false。
調用Child.ancestors[2].new.is_a?(Parent)
也返回false。我似乎無法弄清楚爲什麼這會考慮呼叫Parent.new.is_a?(Parent)
返回true,因爲它顯然應該。
這些類最終都會從ActiveResource::Base
下降,如果這與它有任何關係。
class Parent < ActiveRecord::Base
include MyModule
def self.my_method(obj)
if obj.is_a?(Parent)
puts 'Hello'
end
end
end
class Child < Parent
def my_method
self.class.my_method(self)
end
end
a = Child.new
a.my_method
你可以發佈你的類定義嗎? – Gazler
'類父<的ActiveRecord :: Base的 包括MyModule的 高清self.my_method(OBJ) 如果obj.is_a?(家長) 放 '你好' 結束 結束 結束 類兒童<父 高清my_method self.class.my_method(self) end end a = Child.new a.my_method' –