Ответ 1
Чтобы проверить, является ли anObject экземпляром aClass:
(anObject isMemberOf: aClass)
Чтобы проверить, является ли это экземпляром aClass или одного из его подклассов:
(anObject isKindOf: aClass)
Есть ли простой способ сделать это в Smalltalk? Я на 80% уверен, что есть какой-то метод, но не могу найти его где-нибудь.
Я знаю, что могу использовать
(instance class = SomeClass) ifTrue:
И я знаю, что могу использовать superclass
и т.д., но я надеюсь, что есть что-то встроенное:)
Чтобы проверить, является ли anObject экземпляром aClass:
(anObject isMemberOf: aClass)
Чтобы проверить, является ли это экземпляром aClass или одного из его подклассов:
(anObject isKindOf: aClass)
Вы правы, чтобы проверить точный класс, который вы используете (используя вместо него идентификатор):
класс экземпляра == SomeClass ifTrue: []
Полезно также isKindOf:
, который проверяет, является ли экземпляр классом или подклассом данного класса:
(instance isKindOf: SomeClass) ifTrue: []
Самый красивый и самый элегантный - написать метод тестирования в классах суперкласса и одноранговых сетей, а затем использовать его как:
instance isSomeClass ifTrue: []