[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 メーリングリストの案内