GNU Smalltalk の inheritsFrom: メソッドは、パラメーターとして送信された未定義のクラス名ごとに true を返すようです。これにより、プログラムのデバッグが非常に難しくなる可能性があります。Behavior クラスのこのコードを見ると、次のようになります。
inheritsFrom: aClass [
"Returns true if aClass is a superclass of the receiver"
<category: 'testing the class hierarchy'>
| sc |
aClass isNil ifTrue: [^true].
sc := self.
[sc := sc superclass.
sc isNil] whileFalse: [sc == aClass ifTrue: [^true]].
^false
]
行 aClass isNil ifTrue: [^true] が犯人ですが、このようにコーディングされた方法について正当な理由を探しています。(ちなみに、私は Smalltalk の世界は初めてで、学習しようとしています。)
ありがとう。