使用&&和的ruby条件||
我不知道如何正确地写规则 我想表达以下规则: 如果结论是“否定的”,其中一个前提必须是否定的 我是这样写的使用&&和的ruby条件||,ruby,conditional,Ruby,Conditional,我不知道如何正确地写规则 我想表达以下规则: 如果结论是“否定的”,其中一个前提必须是否定的 我是这样写的 def test4b if (@conclusion.getQuality == 'negative' && (@major.getQuality != 'negative' || @minor.getQuality != 'negative')) validity = "invalid (4b) Negative conclusion without a
def test4b
if (@conclusion.getQuality == 'negative' && (@major.getQuality != 'negative' || @minor.getQuality != 'negative'))
validity = "invalid (4b) Negative conclusion without a negative premise"
else
validity = "pass"
end
end
但这不起作用。它似乎排除了所有带有否定前提的三段论。同样,我只想排除三段论,其中有否定的结论,没有任何否定的前提。应该是:
if (@conclusion.getQuality == 'negative' && (@major.getQuality != 'negative' && @minor.getQuality != 'negative'))
@major和@minor都不能是“否定的”。
您的方法是重新运行的逻辑值!结论=>!少校!少数的此表达式的否定形式为:
!conclusion && !(!major || !minor) <=> !conclusion && major && major
或
我想另一个选项是[@major,@minor]。没有?{| m | m.getQuality=='negative'},它基本上很好地反映了自然语言。在Ruby中,您应该使用snake_大小写作为方法名称,并省略getter的get前缀,即@consultion.quality=='negative',或者更好的谓词方法:@consultion.negative?
if (@conclusion.getQuality == 'negative' && [@major, @minor].all? {|m| m.getQuality != 'negative'})
if (@conclusion.getQuality == 'negative' && ![@major, @minor].any? {|m| m.getQuality == 'negative'})