检查对象是否是给定类或其子类的实例

时间:2012-12-08 16:54:26

标签: smalltalk pharo

在Smalltalk中有一种简单的方法吗?我80%确定有一些方法,但无法在任何地方找到它。

我知道我可以使用

(instance class = SomeClass) ifTrue:

而且我知道我可以使用superclass等...但我希望内置有一些内容:)

2 个答案:

答案 0 :(得分:20)

测试Object是否是Class的实例:

(anObject isMemberOf: aClass)

测试它是aClass的实例还是其中一个子类:

(anObject isKindOf: aClass)

答案 1 :(得分:5)

你是对的,检查你使用的确切类别(改为使用身份):

  

instance class == SomeClass ifTrue:[]

有用的也是isKindOf:,它测试实例是否是给定类的类或子类:

  

(instance isKindOf:SomeClass)ifTrue:[]

最好和最优雅的是在超类和对等类中编写测试方法,然后使用它:

  

实例isSomeClass ifTrue:[]