2016-02-22 123 views
0
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运算符是如何工作的以及它如何将布尔值倒置到它的对面,但我不知道如何将它应用于更复杂的代码场景,如if语句,函数等。我甚至不知道我是否正确编写了这个基本程序,但我对如何编写这样一个基本程序感到困惑。对不起,如果这似乎是一个小问题,但我已经阅读了苹果文档,并且正在研究一本适合初学者的快速书,我已经观看了许多YouTube视频,但是无法用头包裹我的头不是普通的运算符trueVarue = True ........!trueValue //使它成为false ......我明白了,但是在这个程序中我也尝试过在上面写。在if语句中使用时,与NOT运算符混淆?

+4

不要想太多。 'if(true){do true stuff} else {do false stuff}'。无论if()是多么复杂/简单,它都可以归结为一个简单的布尔值true/false。 –

回答

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已经是一个布尔表达式返回truea除以b产生零时,所以不需要在其附近设置条件if

0

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

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.