このセッションでは 2つのことをお教えします。
シーケンスとカスケードです。 どちらも Pharo ではよく使われています。
一連のメッセージを書くことがよくあります。
それらのメッセージには区切りが必要です。
例にあるように ピリオドで区切ります。
ここにあるように Transcript cr.
トランスクリプト(Transcript)は メッセージを記録する簡単なツールです。
改行したい。 1というオブジェクトを表示したい。
2を表示したい。 ピリオドを使います。
表現式はピリオドで区切ります。
別の例を見てみましょう。
2つのローカル変数を定義しました。
ワークステーションを定義しました。 ネットワークシミュレータです。
この表現式の末尾にピリオドを書きます。
そして次の表現式が続きます。 ここでピリオドを使うこともできます。
説明した通り、ピリオドは区切りです。 終末記号ではありません。
Javaでは必ずセミコロンをつけなければなりません。
Pharoでは必ずしもピリオドは必要ありません。
初心者はちょっと戸惑うかもしれませんが
パイプ(縦棒)はローカル変数の定義です。
これについては別のレッスンで説明します。
ここではピリオドは使いません。
通常、まずはローカル変数を定義してから 表現式が始まります。
最初の表現式の後で ピリオドを使います。
それとは別に
同じオブジェクトにいくつかのメッセージを 送りたいことがしばしばあります。
億劫なので レシーバーを何度も繰り返したくはありません。
これを見てください。
Transcript cr. 続いて Transcript show: Transcript...
もう3回も Transcript と言いました。
そこでカスケードを使うことができます。 セミコロンを使います。
Transcript cr; と書いて
トランスクリプトに cr メッセージを送ります。
カスケードは
「ここから、全てのメッセージは最初のメッセージの レシーバーと同じオブジェクトに送られます」という意味です。
Transcript に show: 1 が送られ
そして show: 2 が Transcript に送られます。
ややこしい部分なので もう一度説明します。
最初のメッセージを通常通りに送ります。
ピリオドの代わりにセミコロンを使います。
セミコロンはそれぞれのメッセージが最初と同じ レシーバーに送られることを意味します。
show: 1 が同じレシーバーに送られます。
セミコロンは show: 2 が同じレシーバーに送られるという意味です。
別の例です。 コレクションを作りたいとします。
コレクションが手元にあって 変数 c を定義します。
c のコレクションに書き込みます。 ここにピリオドがありますね？
1 と 2 をコレクションに追加(add)します。
これら2つの式は同じ形をしています。
つまり OrderedCollection new
としてコレクションを作って、それから最初のメッセージ add: 1 を送って要素を追加します。
セミコロンがあるので このメッセージはこのコレクションに送られます。
Pharo 初心者の皆さんへのアドバイスですが
無理にカスケードを使わないでください。
カスケードを説明するのは あなたがきっとコードを読むからです。
カスケードはコードの中で使われています。
もしこの構文やピリオドに違和感なく 気持ちよく付き合えるようになったら
もっと柔軟になって
カスケードを使うことを考えるようになるでしょう。 私もそうやって学びました。
1歩ずつ進んでいきましょう。
今回、何を学んだでしょう？
. は区切り記号です。 およそ Java の ; のようなものです。
; はカスケードです。 同じレシーバーを繰り返し書くことを避けるのに有効です。
カスケードの値は 最後に送られたメッセージの返り値です。