"a && not b"会出现语法错误?

ste*_*715 2 ruby

这行给了我一个语法错误:

if @array.include?('cat') && not @array.include?('dog')

有任何想法吗?

Mic*_*ade 6

做这个:

if @array.include?('cat') && ! @array.include?('dog')
Run Code Online (Sandbox Code Playgroud)

!并且not做大部分相同的事情,但不能互换使用.

对于好奇:在ruby解析器中实际上存在某种怪癖,使得它无法解释像这样的表达式,即使它们在理论上是可解析的和声音.

这些可以解析:

not true && true
true && not(true)
Run Code Online (Sandbox Code Playgroud)

但这些不能:

true && not true
true && not (true)
Run Code Online (Sandbox Code Playgroud)

请注意,最后一个仅在之前的额外空间中有所不同(!