From: EGUCHI Osamu Date: 1999-11-27T00:39:43+09:00 Subject: [ruby-list:18971] Re: or と || の違い えぐち@エスアンドイー です。 >>> In message [ruby-list:18966] Re: or と || の違い On Fri, 26 Nov 1999 23:46:27 +0900, Tomoyuki Kosimizu said: > 越水です。 > > &&と||とでは、&&のほうが結合順位が高いことになっています。でも、下のコー > ドを実行すると: > > (p 1; true) || (p 2; true) && (p 3; true) > > 最初の(p 1; true)だけが実行されます。ということは、||のほうが優先順位 > が高い、あるいは、少なくとも同じということにならないのでしょうか。 わたしも以前、意外に思ったのですが、 この場合、 a || b && c の時、a が true なら b や c が何であれ、式全体の値は true なので、 a が true の時に b や c は評価する必要はないので、結果の値は正しいです。 ただし、 0 * x が必ず、0 となるので x が評価されないかと言うと、 Fixnum#* が再定義される可能性があるので、これは必ず全て評価されます。 Ruby の || と && (それに or と and)は、再定義出来ないのは、 どうやらそれが制御構造である為らしいです。(あってますか?) こういう具合に || と && からなる式は、必ず左から順に評価されます。 えぐち