“a && not b”给出语法错误?

问题描述:

这一行给了我一个语法错误:“a && not b”给出语法错误?

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

任何想法?

+0

_not working_以什么方式?你可以给你的程序的所有三行和你预期的输出吗? – sarnold 2012-04-10 00:52:20

+0

对我来说看起来完全有效,请尝试打印数组的内容以查看实际内容。另外,用英语写出你想要的语句是有用的。 I.e:当数组有'猫'并且数组没有'狗'时,我想进入if语句。 – 2012-04-10 00:53:43

+0

你想完成什么?测试将是理想的。 – shime 2012-04-10 00:58:41

这样做:

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

!not大多做同样的事情,但不能完全互换使用。

对于好奇:ruby语法分析器中实际存在一些怪癖,使得它无法解释像这样的表达式,尽管它们在理论上可以解析和合理。

这些可以被解析:

not true && true 
true && not(true) 

但这些不能:

true && not true 
true && not (true) 

注意,最后一个只在额外的空间是不同的(之前!

+1

两者之间的唯一区别就是优先。 – 2012-04-10 00:56:52

+0

实际上ruby的解析器中存在一些怪异的表情,就像给出的表情一样。 – 2012-04-10 00:58:00

+0

1.8.7也不能解析'true && not(true)'。如果您在第二学期放置括号,则可以解析后两项。 '真&&(不正确)'。我猜'&&'的优先级太强了,它会使解析器混淆:) – Kelvin 2013-02-04 22:13:57