【发布时间】:2023-04-06 06:55:01
【问题描述】:
我已经尝试并未能在 Pharo 中找到一种方法来查找特定类实例是否具有特定类作为超类。通过超类,我不仅指的是作为其子类的类,而且还指的是其继承线上的所有其他类。
我以为 Object >> isSubclassOf: 中会有一条消息,但可惜我找不到这样的消息
【问题讨论】:
我已经尝试并未能在 Pharo 中找到一种方法来查找特定类实例是否具有特定类作为超类。通过超类,我不仅指的是作为其子类的类,而且还指的是其继承线上的所有其他类。
我以为 Object >> isSubclassOf: 中会有一条消息,但可惜我找不到这样的消息
【问题讨论】:
我不清楚你想找到什么,但如果你想看看 anObject 是 aClass 的实例还是它的超类,你可以使用:
anObject isKindOf: aClass
如果你想查看anObject(类)是否继承自aClass,那么你使用:
anObject inheritsFrom: aClass
【讨论】:
isKindOf: 也回答 true,如果对象是参数的实例,而不仅仅是参数的超类的实例。所以'Kilon' isKindOf: ByteString 回答正确,而'Kilon' class isSubclassOf: ByteString 回答错误。
只有一个类可以是另一个类的子类。因此,您必须首先获取对象的类:
String inheritsFrom: Collection "prints: true"
'Pharo is cool' class inheritsFrom: Collection "prints: true"
【讨论】: