もりきゅうです.

ttate / jaist.ac.jp さんは書きました:
>moriq> 次の結果は妙ですよね.
>moriq> ruby -e 'a=false;a=true if true or true and false;p a'
>moriq> false
>
>and,orは予約語になっていて優先度は同じようです。
>(parse.yとマニュアルより)
>よって、and,orに対する計算は左から順に行なわれることに
>なって、a = true という代入は行なわれないわけです。
>
>moriq> ruby -e 'p true or true and false'
>moriq> true
>
>p true or true and false は
>(p true) or true and false と解釈されます。
>
>よって表示されるのは"true"ですが、式全体の値は
>
>(p true or true and false) = nil or true and false
>                           = true and false
>                           = false
>となると思います。

ありがとうございます.

FAQ のネタにでもしてくださいませ.^^;
--
4. 構文
  Q: p true or true and false は true になるのに
    if true or true and false は false になります.
  A: (立石さんのお返事)
--

----
Kazuhiro Yoshida  moriq / ma2.seikyou.ne.jp