WorkspaceではSmalltalkコードを書いて'do it'できたりするが、どうしてるんでしょうか?またワークスペースで変数を特別な宣言無しに使えますが、どうしてるんでしょうか?
というわけで、ちょっとWorkspaceについて調べてみる。
■'do it'
WorkspaceのPluggableTextMorph経由でCompilerクラスの#evaluate:in:to:notifying:ifFail:logged:でUndefinedObjectクラスに#DoIt,#DoItIn:メソッドを追加して実行しています。
■Workspace変数
次のコードをワークスペースに記入して'do it'します。
すると以後starでこのオブジェクトにアクセスできますが、どうなってるかPointer Finderを使って調べてみます。次のコードでインスペクタを起動します。インスペクタから'chase pointers'でPointer Finderを起動します。おもむろにインスペクタを閉じてPointer Finderで'Search again'します。
すると添付画像のように'bindings: Dictionary'を選択してinspectするとbindingsというWorkspaceのインスタンス変数に束縛されていることがわかります。で、ここを参照して'do it'したりできるわけですね。
というわけで、ちょっとWorkspaceについて調べてみる。
■'do it'
WorkspaceのPluggableTextMorph経由でCompilerクラスの#evaluate:in:to:notifying:ifFail:logged:でUndefinedObjectクラスに#DoIt,#DoItIn:メソッドを追加して実行しています。
■Workspace変数
次のコードをワークスペースに記入して'do it'します。
star := StarMorph new.
すると以後starでこのオブジェクトにアクセスできますが、どうなってるかPointer Finderを使って調べてみます。次のコードでインスペクタを起動します。インスペクタから'chase pointers'でPointer Finderを起動します。おもむろにインスペクタを閉じてPointer Finderで'Search again'します。
star inspect.
すると添付画像のように'bindings: Dictionary'を選択してinspectするとbindingsというWorkspaceのインスタンス変数に束縛されていることがわかります。で、ここを参照して'do it'したりできるわけですね。