などとすることで、{a. b-3. c squared}
と同じことができる。Array with: a with: b-3 with: c squared
のようにしてしまうが、これは期待した結果を生まず、こうなる↓。#((a) (b-3) (c squared))
この #() 式は、Lisp の quote“'()”式の位置づけにちょっと似たところがあるかも。#(#(#a) #(#b -3) #(#c #squared))
が、#(true false nil) ではなく、#(#true #false #nil) になることから、これら true、false、nil はリテラル(式)ではなく変数(ただし変数でも、self、super、thisContext、メソッド定義のメッセージパターン中の引数、ブロック変数のように、束縛のしなおし=代入を許さない偽変数)であることが分かる。当然、期待される an Array を生じさせたければ、#(true false nil)
もしくはArray with: true with: false with: nil
としないといけない。{true. false. nil}
などとして多値代入時にも使えた。が、この仕様は明らかに行き過ぎと判断されたのだろうか、2.x の半ば頃に廃止されて久しく今は使えない。{a. b} _ {1. 2}
当然、#caseOF: 式も含め、{ } を使った式は Squeak 独自で他の Smalltalk における互換性はない。| char | char _ $b. ^ char caseOf: { [$a] -> ['apple']. [$b] -> ['beer']. [$c] -> ['cat']} => 'beer'
このページを編集 (2843 bytes)
以下の 2 ページから参照されています。 |
This page has been visited 5671 times.