ObjectSquare [1999 年 1 月号]

[Happy Squeaking!!]


3.Squeak 演習:オブジェクトにメッセージを送る

3.3 複数メッセージの実行

3.3.2 カスケード(メッセージの流し込み)


Smalltalkでは、特定のオブジェクトに対して連続してメッセージを送り込むための一種の省略記法が用意されています。

例えば、車を表すcarオブジェクトがあったと仮定しますと、以下のように ;(セミコロン)を使ってつなげて書くことができます。

car start;
   turnRight;
   turnLeft;
   stop.

これは、

car start.
car turnRight.
car turnLeft.
car stop.

と書いたの同じことです。同じオブジェクトをレシーバとして連続的にメッセージを流し込むときに、便利な書き方です。このことからカスケード(滝)と呼ばれています。

配列オブジェクトで実行してみると以下のようになります。

| targetArray |
targetArray := #('Hello' 'Smalltalk').
targetArray at: 1 put: 'Happy';
        at: 2 put: 'Squeak' ;
        inspect.

と書くことができます。(特に改行の必要はありません、わかりやすさのためにあえて行っています)。

SmallTip: 同じレシーバに対し、メッセージを次々送りたい場合にカスケードの表記を使うことができる。

ちなみに上記の例を実行すると、以下のようなウィンドウが立ち上がります。

拡大図(GIF,43KB)
インスペクタの起動

これはインスペクタというツールです。カプセル化されていて中身の見えないはずのオブジェクトも、このツールを使えば見ることができてしまいます。

オブジェクトの中身を見たいときは、そのオブジェクトに対し、inspectというメッセージを送ればいいわけです。

余裕のある方は、以下を試してみましょう。

'abcd' inspect.
$c inspect.
#( $a 'complexArray' #( $a $b $c)) inspect

SmallTip: オブジェクトの中身は inspectメッセージを送ることで調べることができる。

© 1999-2001 OGIS-RI Co., Ltd.

Prev.

Index

Next