![]() |
[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. |
|