在if语句中使用时,与NOT运算符混淆了吗?

时间:2016-02-22 20:30:25

标签: swift if-statement logic not-operator

func nonZeroAnswer (a : Double, b : Double) -> Bool {

       if a / b == 0 { return true}  else {return false}
 }

nonZeroAnswer (5, 0)   //This returns false

if !nonZeroAnswer(2, 2) {
     print("This is a Zero Answer")
}

我一遍又一遍地阅读苹果文档并了解Not运算符的工作原理以及它如何将布尔值反转为相反的但我不知道如何在更复杂的代码场景中应用它好像是陈述,功能等等。我甚至不知道我是否正确地编写了这个基本程序,我总是对如何编写这样一个基本程序感到困惑。我很抱歉,如果这看起来像一个小问题,但我已经阅读了苹果文档,而且我正在研究一本据说适合初学者的快速书籍,我已经观看过很多YouTube视频,但只是可以&#39 ; t除了普通的trueValue = True ........!trueValue //之后使用Not运算符包围我的头部使它变得虚假......我明白了但是只是让人感到困惑就像在这个程序中我试图写上面一样。

2 个答案:

答案 0 :(得分:0)

当您在控制语句的上下文中使用时,有和没有!运算符的布尔表达式保持不变,例如ifwhile等。唯一的区别是控制语句基于评估结果所做的事情。

推理布尔表达式的一种方法是独立于其上下文来考虑它们。例如,您可以查看表达式

!nonZeroAnswer(2, 2)

并在truenonZeroAnswer(2, 2)时看到false,反之亦然。之后你可以插上"将结果导入ifwhile,或者上下文中的任何内容,并说明,例如,

if !nonZeroAnswer(2, 2) {
     print("This is a Zero Answer")
}

nonZeroAnswer(2, 2)返回false时打印一些内容。

注意:您可以返回布尔表达式本身,而不是编写返回truefalse的条件,因为它具有相同的值:

func nonZeroAnswer (a : Double, b : Double) -> Bool {
    return a / b == 0
}

a / b == 0已经是一个布尔表达式,当true除以a时会返回b,因此不需要设置if条件在它周围。

答案 1 :(得分:0)

它的基本编码。 ! symbol只是反转布尔值 请考虑以下两种情况: -

nonZeroAnswer(2,2)  
//returns false as (2/2 = 1) != 0
//Hence !nonZeroAnswer(2,2) = !false = true
//Hence "This is a zero answer" will be printed in this case as the condition for if block is true

nonZeroAnswer(0,3)
//returns true as (0/3 = 0) == 0
//Hence !nonZeroAnswer(0,3) = !true = false
//Hence "This is a zero answer" will not be printed as the condition for if block is false. So wont enter the block.