まつもと ゆきひろです

In message "[ruby-list:18713] ruby 本96頁と97頁の例題"
    on 99/11/18, "Shigeo Kobayashi" <shigeo / tinyforest.gr.jp> writes:


|10.times do
| print "!foo\n"
|end
|
|5.upto 10 do |i|
| print i
|end
|
|のそれぞれを、do を { に、end を } に置き換えて
|実行すると 5.upto 10  { |i| の部分だけがparse error
|になります。なにか間違っていますでしょうか?

いえ、これが正しい動作です。つまり、do endと { } では優先順
位が違うので、

  5.upto 10 do .. end

は 

  5.upto(10) do .. end

と解釈され、ブロックはuptoに渡されますが、

  5.upto 10 { .. }

は

  5.upto(10{ .. })

と解釈され、メソッド呼び出しでない「10」にブロックを渡そうと
して文法エラーになります。p.94の脚注71はそういう意味です。

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