Smalltalkにおける関数オブジェクト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/03 01:18 UTC 版)
「関数オブジェクト」の記事における「Smalltalkにおける関数オブジェクト」の解説
冒頭にも述べたようSmalltalkでは関数オブジェクトに類似する機能としてブロックが存在する。他の言語同様関数的な使い方も可能であるが、複数の実行方法を備えており多機能になっている。Smalltalkでは言語構文としてif文を始め殆どの制御構文が存在せず、メッセージとこのブロックの組み合わせによってあらゆる制御を実現しておりブロックはSmalltalkの根幹をなしている。 下記に一般的なブロックの使用例を示す。[から]までがブロックである。 Number methodsFor:'comparing'!max: aNumber "レシーバーと引数を比較して大きい方を返す。" self < aNumber ifTrue: [ ^ aNumber. "ブロック内ではブロックの外側にある変数も参照できる" ] ifFalse: [ ^ self. ].!! 上記における^は他の言語のreturnに当たる復帰文であるが、この復帰文はブロックの呼び出し階層を無視しブロックを含むメソッドの呼び出し元まで一気に戻るという特殊な働きをしており、更に他の言語と一線を隔てる特徴となっている。この復帰文によって、ブロックはより制御構文としての性格が強くなっている。
※この「Smalltalkにおける関数オブジェクト」の解説は、「関数オブジェクト」の解説の一部です。
「Smalltalkにおける関数オブジェクト」を含む「関数オブジェクト」の記事については、「関数オブジェクト」の概要を参照ください。
- Smalltalkにおける関数オブジェクトのページへのリンク