[Squeak-ja: 3880] Re: Object特異的な情報を含むメッセージの発信について

Hiromichi Tsurui tsurui @ med.juntendo.ac.jp
2008年 5月 13日 (火) 09:38:18 JST


Yoshikiさん

懇切なお返事ありがとうございます。
メッセージの引数としてobjectをとれ、その結果object間で極めて一般的な情報のやり取りができることがわかりました。
このことを年頭におきますと、プログラムの記述が見通しが良く簡潔になることが納得できます。

鶴井



>  鶴井さん
>
>> >  オブジェクト間のやりとりというものは、すべて「メッセージ」という概念
>> > で抽象化されていますが、メッセージには「引数」を付けて送ることができ、
>> > メッセージ送信者自身を現す"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 メーリングリストの案内