![]() |
[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: 同じレシーバに対し、メッセージを次々送りたい場合にカスケードの表記を使うことができる。 |
ちなみに上記の例を実行すると、以下のようなウィンドウが立ち上がります。
これはインスペクタというツールです。カプセル化されていて中身の見えないはずのオブジェクトも、このツールを使えば見ることができてしまいます。
オブジェクトの中身を見たいときは、そのオブジェクトに対し、inspectというメッセージを送ればいいわけです。
余裕のある方は、以下を試してみましょう。
'abcd' inspect.
$c inspect.
#( $a 'complexArray' #( $a $b $c)) inspect
SmallTip: オブジェクトの中身は inspectメッセージを送ることで調べることができる。 |
© 1999-2001 OGIS-RI Co., Ltd. |
|