まつもと ゆきひろです

In message "Re: [ruby-dev:26623] Ruby2.0BlockParameterNotation"
    on Thu, 28 Jul 2005 16:40:45 +0900, SASADA Koichi <ko1 / atdot.net> writes:

| ところで、この議論、「(1) ブロック付きメソッド呼び出し時に指定するブ
|ロック」のための表記と、「(2) Proc オブジェクトを作る」ための表記がある
|と思うのですが、この関係がよくわかりません。
|
| (1) は、
|
|  [1,2,3].map{|x| x * x}
|
| に代わる表記で、
|
| (2) は
|
|  pr = lambda{|x| ...}
|(最近では pr = {|x| ...})
|
| に代わる記法ということですよね。

そうです。

| どちらも同様の記法にすると思っていたのですが、http:
|//www.rubyist.net/~matz/20050701.html#p02 では、
|
|> -> (x,y) { ... }
|> しかし、ブロックとして使う場合は
|> { -> (x, y) ... }
|
| と書かれているので、別々にする、ということでしょうか。

いえ、どちらも同じです。

  -> パラメタ { ... } 

ですね。括弧は省略できますが、省略した場合、オプショナル引数
は使えません。文法上の制約ですね。

| 今までブロックパラメータはブロックの中に書かれていた(do/end 、{} で囲
|まれていた)ので、それを外に出す表記は今のところ個人的には抵抗があります。

気持ちは分かります。

| それよりも気になっているのがブロックパラメータのための括弧の省略が可能
|か、ということだったり。

上述の通り、完全ではないものの省略できます。

                                まつもと ゆきひろ /:|)