ObjectSquare [1999 年 1 月号]

[Happy Squeaking!!]


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

3.3 複数メッセージの実行

3.3.1 メッセージの優先順位


単項、2項、キーワードメッセージは、組み合わせて書かれた場合、優先順位にもとづいて実行されます。
優先順位は以下のようになります。

単項 > 2項 > キーワード

例でみてみましょう。

'HelloSmalltalk' at: 1 negated + 7.

結果は $Sとなります。予想がつくでしょうか。

'HelloSmalltalk' at: 1 negated + 7. の文全体で、まずもっとも優先度の高いメッセージは 単項メッセージのnegatedです。従ってこの部分が最初に実行され、結果として -1が返ります。
'HelloSmalltalk' at: -1 + 7.
次は、2項メッセージの + が実行されます。
'HelloSmalltalk' at: 6.
そして最後はキーワードメッセージの at: の実行になります。

一見ややこしそうですが、この優先順位のおかげで、複雑なオブジェクト関の一連のやり取りも、一つの文の中にコンパクトに書くことができるのです。

実行の流れを、変数に代入する冗長な形式で書くと以下のようになります。

| minus index |
minus := 1 negated.
index := minus + 7.
'HelloSmalltalk' at: index

慣れれば、このようなやり方はやぼったく思えてきます。Smalltalkなのですから、ごたごた書かずに small talkでいきましょう。

SmallTip: メッセージの優先度は 単項 > 2項 > キーワード の順。

また、優先順位を高めたい場合には()でくくることもできます。

例として、

3 + ( 5 * 4 )

と書くことができます。この場合の結果は 23 になります。

SmallTip: ()でくくろことで優先度を高めることができる。

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

Prev.

Index

Next