2

squeak の大部分は、squeak 自体を使用して実装されています。selfまたはなどの疑似変数trueも squeak を使用して実装されているかどうか知りたいです。答えが「はい」の場合、実装はどこにありますか?

具体的には、"Other" という "Boolean" の新しいサブクラスを追加するとします。これは、3 番目のオプション (true でも false でもありません) を表します。otherの唯一のインスタンスがOther真/偽のグローバルシングルトンに似ていることを望みます。

何か案は?ありがとうございました。

4

2 に答える 2

4

グローバルにします:

Smalltalk at: #other put: Other new
于 2010-05-19T06:32:57.827 に答える
1

前の回答は、Smalltalk イメージをさらに変更しないと機能しません。これは、Boolean が new をオーバーライドしてエラーを発生させるためです。

new
    self error: 'You may not create any more Booleans - this is two-valued logic'

Boolean subclass: #Other を試してから、上記のように Smalltalk グローバルに other キーワードを追加しようとすると、エラーが発生します。

Boolean>>new を削除して、Other クラスを実装し、それを Smalltalk グローバルに追加してから、Boolean>>new を置き換えることができます。

次に、 ClassBuilder>reservedNames を更新して、新しいブール値を保護することを検討してください。

reservedNames
"Return a list of names that must not be used for variables"
    ^#('self' 'super' 'thisContext' 'true' 'false' 'nil' 
     self super thisContext #true #false #nil).
于 2013-07-15T06:15:00.057 に答える