簡單的例子:如何知道一個類是否從另一個類繼承?一些方法,如is_a?
class A
end
class B < A
end
那麼,如何判斷B類是否是從A類繼承? 有沒有一種方法像is_a?
或可能被稱爲is_child_of?
?我找不到一個。
簡單的例子:如何知道一個類是否從另一個類繼承?一些方法,如is_a?
class A
end
class B < A
end
那麼,如何判斷B類是否是從A類繼承? 有沒有一種方法像is_a?
或可能被稱爲is_child_of?
?我找不到一個。
可以使用<
操作:
B < A
將是真實的,如果B是A
您可以在線找到Ruby Objects的所有方法定義。
最接近的有用方法是is_a?
或kind_of?
但是請閱讀文檔以確定它們是您要查找的內容。
的子類在Ruby類Object
有kind_of?
方法你想要做什麼。這也化名爲is_a?
:
module M; end
class A
include M
end
class B < A; end
class C < B; end
b = B.new
b.kind_of? A #=> true
b.is_of? B #=> true
b.kind_of? C #=> false
b.kind_of? M #=> true
此外,類Class
有superclass
方法:
>> B.superclass
=> A
注意,你可以要求它找出方法的任何對象支持:
B.methods.sort
該命令的輸出將包括kind_of?
/is_a?
/superclass
方法。