[Squeak-ja: 3879] Re: Object特異的な情報を含むメッセージの発信について
Yoshiki Ohshima
yoshiki @ vpri.org
2008年 5月 13日 (火) 02:49:15 JST
鶴井さん
> > オブジェクト間のやりとりというものは、すべて「メッセージ」という概念
> > で抽象化されていますが、メッセージには「引数」を付けて送ることができ、
> > メッセージ送信者自身を現す"self"を含め、送信者が「知っている」(送信者
> > が参照可能である)任意のオブジェクト、またはそれらを含む任意の式を引数
> > とすることができます。というわけで、阿部さんの言うように一般的には
> >
> > b message: self.
> >
> > というメッセージをaが実行すれば良いことになります。
> この場合、送信者aを指定するにはどうすれば宜しいですか?
> 送信者は暗黙にプログラマーだけかと思っていました。GUIでのevent handlingで予め用意されている場合以外は。
あるメソッドの中でaという変数にあるオブジェクトが束縛されているなら、
b message: a
と書けばよいということでしょうか。
(私の書いたのは微妙に間違いがあって、「送信者を現すself」と書いたの
は話をややこしくしたかもしれません。厳密に言えば「送信者」は「メソッド
を実行しているコンテキスト」ということになりますので。ただ、その辺は今
はあまり気にする必要はないと思われます。)
例えばWorkspaceとTranscriptを開き(VisualWorksならデフォルトですで
に開かれていると思いますが)、Workspaceのほうに
Transcript show: 'abc'.
と書いてdo it したり、
Transcript show: 3 printString.
と書いてdo it したり、
| a b |
a := 'abc'.
b := 'def'.
Transcript show: a.
Transcript space.
Transcript show: b.
Transcript space.
Transcript show: a, b.
という8行を書いてそれを選択してdo it してみてください。aやbやそれを演
算した結果をTranscriptオブジェクトへのメッセージ送信に付加できることが
わかるかと思います。
-- Yoshiki
Squeak-ja メーリングリストの案内