Mai*_*kon 0 ruby comparison logical-operators
我在Pry玩,遇到了这个:
20] pry(main)> ('X' && 'O') == 'X'
=> false
[22] pry(main)> ('O' && 'X') == 'X'
=> true
Run Code Online (Sandbox Code Playgroud)
有了这个,我试图检查括号内的两个值是否与右边的值相同.第二个结果告诉我,我错过了一些东西.
看起来它正在返回最后一次比较的值('X'=='X'),但我认为&&会在发现第一个错误后立即停止?
我可以看到为什么顺序一般很重要,但我想通过将它们包装在()中它们会被检查为一个条件?
但我觉得&&会在发现第一个错误后立即停止?
你是对的.但这并没有发生在你的任何一个例子中.
在您的这两个例子'O'和'X',是字符串对象,其中有truthy价值.
在示例中('X' && 'O') == 'X',('X' && 'O')给出"O",并将其与之进行比较"X",这是false当然的.所以你得到了false.
在另一个('O' && 'X') == 'X',('O' && 'X')给出"X",然后进行比较"X",当然应该是true.因此,你进入true了你的PRY.
注意:在Ruby中,除了和之外,所有对象都具有真正的价值.nilfalse
在使用时&&,它将继续评估,所有的表达,直到它得到一个被评价为假的表达.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |