From: KAWATO Masahiro Date: 1999-11-26T22:02:42+09:00 Subject: [ruby-list:18963] Re: or と || の違い 川戸と申します。はじめまして。 From: Ayanosuke [ruby-list:18961] >  いったい、orと||の違いとはどう言ったものなのでしょうか? > >  該当する説明を見つけることが出来なかったので、ポインタだけ > でも教えていただけると嬉しいです。 リファレンスマニュアルの「Rubyの文法」(syntax.html) の「制御構造」 の項で説明されていますが,or と || は優先順位が違います。 ただ,館林さんが挙げられていたプログラムには別の問題があります。 > if(a == "dog" or "cat") then #ok 「a の内容が "dog" または "cat" に一致する場合に then 以下を実行する」 ためには,上のような形では書けず, if a == "dog" or a == "cat" then としなければなりません。 元の文だと,「if ((a == "dog") or "cat")」のように解釈され,a の値に 関わらず then 以下が実行されることになります (|| を使った場合も同じ)。 case の場合も,元の書き方では期待される動作をしません。 > case a > # when "dog" or "cat" #error > when "dog" || "cat" > print "good! \n" > end これだと,"dog" || "cat" が解釈された結果 "dog" となり, a の値が "dog" に一致するときのみ print が実行されます。 a の内容が "dog" または "cat" である場合に print が実行される ようにしたいときには,以下のように書きます。 case a when "dog", "cat" print "good! \n" end これも,「Rubyの文法」の制御構造のところで説明されています。 何か間違いがあったら指摘してください。> 皆様 ---------- 東京工業大学 情報理工学研究科 計算工学専攻 川戸 正裕 (kawato@de.cs.titech.ac.jp)