vieweditattachhistoryswikistopchangessearchhelp

カーリーブレイス

Curly Brace 。いわゆる中括弧、{ } のこと。Squeak では、
{a. b-3. c squared}
などとすることで、
Array with: a with: b-3 with: c squared
と同じことができる。

閑話休題。

Squeak の { } は、Apple Smalltalk 時代に、ラリー・テスラーが追加した機能のなごりで、そこから派生的に作られた Squeak にも受け継がれた。おそらくもともとは、C 言語の似たような機能を模したもの。

当初は、各式の評価結果を、新しく生じさせた an Array に対してその要素として順に束縛するこの機能の他に、
{a. b} _ {1. 2}
などとして多値代入時にも使えた。が、この仕様は明らかに行き過ぎと判断されたのだろうか、2.x の半ば頃に廃止されて久しく今は使えない。

(Smalltalk 的にはなじまないが) case 文ライクな式も Squeak では { } を使って書くことができる(下のコード中 #-> はレシーバを key 、パラメメータを value にして Association のインスタンスを生成するメッセージのセレクタ)。なお、#caseOf: 、#caseOf:otherwise: 式でのこの { } を使った書き方は、ある種のマクロ展開がなされるようになっていて ArrayedCollection class >> #with:with:... では代替できないことが、つい先ほど判明した(^_^;)。
| char |
char _ $b.
^ char caseOf: {
	[$a] -> ['apple'].
	[$b] -> ['beer'].
	[$c] -> ['cat']}

=> 'beer'
当然、#caseOF: 式も含め、{ } を使った式は Squeak 独自で他の Smalltalk における互換性はない。

参考

--sumim

このページを編集 (2843 bytes)


Congratulations! 以下の 2 ページから参照されています。

This page has been visited 5671 times.