【问题标题】:How to find if a class is super class of my class instance如何查找一个类是否是我的类实例的超类
【发布时间】:2023-04-06 06:55:01
【问题描述】:

我已经尝试并未能在 Pharo 中找到一种方法来查找特定类实例是否具有特定类作为超类。通过超类,我不仅指的是作为其子类的类,而且还指的是其继承线上的所有其他类。

我以为 Object >> isSubclassOf: 中会有一条消息,但可惜我找不到这样的消息

【问题讨论】:

    标签: smalltalk pharo


    【解决方案1】:

    我不清楚你想找到什么,但如果你想看看 anObjectaClass 的实例还是它的超类,你可以使用:

    anObject isKindOf: aClass
    

    如果你想查看anObject(类)是否继承自aClass,那么你使用:

    anObject inheritsFrom: aClass
    

    【讨论】:

    • 所以如果我理解你的话,isKindOf: 适用于实例,而 inheritsFrom: 适用于类?在我的例子中,aAnObject 是一个类的实例,我们称之为 X,我想知道这个对象的类是否继承自另一个类,我们称之为 Y。
    • ps:我尝试了 isKindOf: 并且成功了,所以谢谢
    • 但正如 Uko 所说,isKindOf: 也回答 true,如果对象是参数的实例,而不仅仅是参数的超类的实例。所以'Kilon' isKindOf: ByteString 回答正确,而'Kilon' class isSubclassOf: ByteString 回答错误。
    【解决方案2】:

    只有一个类可以是另一个类的子类。因此,您必须首先获取对象的类:

    String inheritsFrom: Collection "prints: true"
    'Pharo is cool' class inheritsFrom: Collection "prints: true"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2013-04-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多