メッセージ式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 03:18 UTC 版)
Smalltalk では「メッセージ式」と呼ばれる書式でコードを記述する。メッセージ式は「レシーバー」に「メッセージ」を送ることを表すためのもので、そのまま receiver message と記述する。メッセージはさらに、呼び出されるされるメソッド(方法)の名前を表す「メッセージセレクター」と0個以上の引数の組み合わせからなる。ただし Smalltalk の場合必ずしもセレクターとメソッド名は一致しない。また、メッセージの送り先はメソッドではなくブロックや外部の関数になっている場合もある。セレクターは引数の数だけコロンを自身に含まなければならず、メッセージとして記述する際にはコロンの直後に引数を挿入する。 メッセージ式セレクター引数receiver noArg noArg N/A receiver oneArg: arg oneArg: arg receiver firstArg: arg1 secondArg: arg2 firstArg:secondArg: arg1、arg2 引数なしのメッセージを単項メッセージ、そのセレクターを単項セレクターと呼び、引数ありのメッセージをキーワードメッセージ、そのセレクターをキーワードセレクターと呼ぶ。メッセージ記述の際に引数の挿入により分断されたキーワードセレクター断片(例えば firstArg:secondArg: なら firstArg: と secondArg:)をキーワードと呼ぶが、あくまで便宜的な呼び名に過ぎず、そうした言語要素は存在しない。他の言語に見られる「キーワード引数」のように省略できるものではなく、また引数順を入れ替えられるものでもない。 セレクターは原則としてアルファベットと数字と0個以上(かつ、引数と同数)のコロンから成るが、例外として二項演算を模した記述が可能となるように記号のみから成る引数1つのセレクターを使ってメッセージ式を記述することもできる。これを二項メッセージ、そのセレクターを二項セレクターと呼ぶ。 メッセージ式セレクター引数3 + 4 + 4 #( 1 2 3 ), #( 4 5 ) , #( 4 5 ) この場合、上の「3 + 4」では、「3」がレシーバーで「+ 4」がメッセージである。 通常の処理系では、単項メッセージ、二項メッセージ、キーワードメッセージの順で評価される。二項メッセージ間で乗除の優先はない。 メッセージ式結合性を明示した等価の表現3 + 4 * 5 min: 6 factorial ( ( 3 + 4 ) * 5 ) min: ( 6 factorial ) セミコロン「;」でメッセージ式を区切る事により、1個のレシーバーに対して複数のメッセージを送ることが出来る。これをカスケード式という。 | collection |collection := OrderedCollectionnewadd: 0;add: 1;add: 2;add: 3;add: 4;yourself. カスケード式を用いて書いた上記の文は、カスケード式を用いない次の文と等価である。 | collection |collection := OrderedCollection new.collection add: 0.collection add: 1.collection add: 2.collection add: 3.collection add: 4.
※この「メッセージ式」の解説は、「Smalltalk」の解説の一部です。
「メッセージ式」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。
- メッセージ式のページへのリンク