Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用&&和的ruby条件||_Ruby_Conditional - Fatal编程技术网

使用&&和的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'})