13

在 Smalltalk 中是否有一种简单的方法可以做到这一点?我有 80% 的把握有某种方法,但在任何地方都找不到。

我知道我可以使用

(instance class = SomeClass) ifTrue:

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

4

2 回答 2

20

要测试 anObject 是否是 aClass 的实例:

(anObject isMemberOf: aClass)

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

(anObject isKindOf: aClass)
于 2012-12-08T17:11:33.497 回答
5

你是对的,检查你使用的确切类(使用身份代替):

实例类 == SomeClass ifTrue: []

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

(实例 isKindOf: SomeClass) ifTrue: []

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

实例 isSomeClass ifTrue: []

于 2012-12-08T17:13:17.520 回答