2012-04-20 10 views
1
> test = false and true 
=> false 
> test 
=> false 
> test = true and false #this is the point I don't understand! 
=> false 
> test 
=> true 

なぜこのような方法でルビが動作し、どうすればこの問題に遭遇しないでしょうか?ルービのブール論理 '真と偽==真'

答えて

10

優先順位。 test = true and falseはこのことを意味します

(test = true) and false 

ないこの:あなたは割り当てが最後に来てほしい場合

test = (true and false) 

使用は、上記のように括弧、またはその代わりにand&&

test = true && false 
+3

githubのからruby styleguide: 'andとorキーワードは禁止されています。それだけの価値はない。必ず&&と||を使用してください。代わりに。 – gracchus

+0

ありがとう、この1つは本当に今日私を得ました...どのような奇妙な言語設計の選択... – Jason

+0

Perlから継承されています。最初は '&&'と '||'しかありませんでした。しかし、これらはC(論理的なプリムティブとして)とシェルのように(成功/失敗を処理するために)使用されました。後者の使用では、優先順位は 'my @info = stat($ file)|| '' stat''をリストコンテキストの代わりにスカラーで呼び出す ''エラー ''を打ち消す。これらの頭痛を解決するために、低い優先順位の 'および'/'または'/'not 'が導入されましたが、新しいものを与えました。そして、RubyはPerlから得た残りのものと一緒にそれらを借りました。 –

関連する問題