From: Yukihiro Matsumoto Date: 2005-07-28T17:21:23+09:00 Subject: [ruby-dev:26625] Re: Ruby2.0BlockParameterNotation まつもと ゆきひろです In message "Re: [ruby-dev:26623] Ruby2.0BlockParameterNotation" on Thu, 28 Jul 2005 16:40:45 +0900, SASADA Koichi 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 、{} で囲 |まれていた)ので、それを外に出す表記は今のところ個人的には抵抗があります。 気持ちは分かります。 | それよりも気になっているのがブロックパラメータのための括弧の省略が可能 |か、ということだったり。 上述の通り、完全ではないものの省略できます。 まつもと ゆきひろ /:|)