''.instance_of?(String) && 0 == 0
是真的,但是
''.instance_of? String && 0 == 0
给出
TypeError: class or module required
我必须在&&
之前使用括号,还是错误?
答案 0 :(得分:4)
这不是一个错误。这两件事意味着不同的事情。
它的要点是&&
和||
逻辑运算符的优先级高于方法调用。因此,instance_of?
方法的调用结果为String && 0 == 0
,即true
。 true
不是一个类,因此是错误。
另一方面,and
和or
的优先级较低,因此
''.instance_of? String and 0 == 0
会像你期望的那样工作。
在这种情况下,最好放括号。
答案 1 :(得分:0)
实际上它并不是一个错误。 虽然Ruby方法调用中的括号是可选的,但当它变得模糊时,可能需要括号。