在 Smalltalk 中是否有一种简单的方法可以做到这一点?我有 80% 的把握有某种方法,但在任何地方都找不到。
我知道我可以使用
(instance class = SomeClass) ifTrue:
而且我知道我可以使用superclass
等......但我希望有一些内置的东西:)
要测试 anObject 是否是 aClass 的实例:
(anObject isMemberOf: aClass)
要测试它是 aClass 的实例还是其中一个子类:
(anObject isKindOf: aClass)
你是对的,检查你使用的确切类(使用身份代替):
实例类 == SomeClass ifTrue: []
有用的也是isKindOf:
测试实例是否是给定类的类或子类:
(实例 isKindOf: SomeClass) ifTrue: []
最好和最优雅的是在超类和对等类中编写一个测试方法,然后像这样使用它:
实例 isSomeClass ifTrue: []