【发布时间】:2012-11-26 14:33:59
【问题描述】:
在 Smalltalk 中是否有一种简单的方法可以做到这一点?我 80% 确定有某种方法,但在任何地方都找不到。
我知道我可以使用
(instance class = SomeClass) ifTrue:
而且我知道我可以使用superclass 等...但我希望有一些内置的东西:)
【问题讨论】:
在 Smalltalk 中是否有一种简单的方法可以做到这一点?我 80% 确定有某种方法,但在任何地方都找不到。
我知道我可以使用
(instance class = SomeClass) ifTrue:
而且我知道我可以使用superclass 等...但我希望有一些内置的东西:)
【问题讨论】:
你是对的,检查你使用的确切类(使用身份代替):
实例 class== SomeClass ifTrue: []
Usefull 也是 isKindOf:,它测试实例是否是给定类的类或子类:
(instance isKindOf: SomeClass) ifTrue: []
最好和最优雅的方法是在超类和对等类中编写一个测试方法,然后像这样使用它:
instance isSomeClass ifTrue: []
【讨论】:
测试一个Object是否是一个Class的实例:
(anObject isMemberOf: aClass)
测试它是aClass的实例还是它的子类之一:
(anObject isKindOf: aClass)
【讨论】: