ruby中的布尔逻辑'true和false == true'

Fly*_*FoX 1 ruby boolean-logic

> test = false and true
=> false
> test
=> false
> test = true and false #this is the point I don't understand!
=> false
> test
=> true
Run Code Online (Sandbox Code Playgroud)

为什么ruby会以这种方式运行?如何正确使用它以避免遇到此问题?

Mar*_*eed 10

优先级. test = true and false意思是:

(test = true) and false  
Run Code Online (Sandbox Code Playgroud)

不是这个:

test = (true and false)
Run Code Online (Sandbox Code Playgroud)

使用如上面括号,或&&代替and,如果你想分配给放在最后:

test = true && false
Run Code Online (Sandbox Code Playgroud)

  • 来自github ruby​​ styleguide:'和/或关键字被禁止.这不值得.始终使用&&和|| 代替.' (4认同)