まつもと ゆきひろです

In message "Re: [ruby-list:45666] 複数行にわたる式の評価"
    on Tue, 2 Dec 2008 17:37:02 +0900, TAKAHASHI Hitoshi <thitoshi / post.kek.jp> writes:

|  基本的に改行は式の終わりを意味しますが、
|まだ式の途中であることが明らかな場合は次の行に続くと解釈される
|と理解していたのですが、次の例で、
|
|#(1)
|x = 10 *
|  (1 +
|   2 +
|   4)
|p x  #=> 70
|
|#(2)
|x = 10 *
|  (1
|   + 2
|   + 4)
|p x  #=> 40 ??
|
|(1)は良いが(2)が正しくない答えを返すのはなぜでしょうか?

括弧の中が、「1と+2と+4」という式に見なされ、括弧そのものの
値が+4になるからです。

|どちらも、最初の行は演算子 '*' で終わっているので式の途中、
|2行目以降もカッコ '(' に対応する閉じカッコ ')' がないので式の途中
|であると解釈されると期待していました。

後半の仮定が誤りです。括弧の中で改行があるとそれは独立した式
とみなされます。括弧の中でも改行はセミコロンを置いたのと同じ
意味になります。