参考Objective-C方法中的BOOL值

时间:2011-07-27 20:30:43

标签: objective-c boolean

这是代码的一小部分:

@interface
BOOL isCarryingmallet;

@implementation

-(BOOL)isCarryingWeapon {
   return isCarryingMallet;
}

-(int)getWeaponDamage {
    if (isCarryingMallet) 
        return kVikingMalletDamage;
    else
        return kVikingFistDamage;
}

我不明白这是如何运作的。 return isCarryingmMallet;会返回YES还是NO?为什么== YES中没有(isCarryingMallet)?为什么if (isCarryingMallet)不是if (isCarryingWeapon)。 感谢您回答我的新问题!

4 个答案:

答案 0 :(得分:4)

isCarryingWeapon方法返回isCarryingMallet变量的值。如果有其他可能的武器,那么该方法可以返回更复杂的值,如(isCarryingMallet || isCarryingPlasmaCannon)。基本上现在唯一对这个类很重要的武器就是木槌。当调用isCarryingWeapon方法时,这个类对自己说:“我带着槌吗?”如果是这样,它知道它携带武器,所以它返回真 - “是的,我有武器。”否则返回false。

至于if问题 - 所有if语句都会确定括号中的值是评估为true还是false。等式语句在if语句中很常见,但它们根本不需要。更具体地说,任何非0,null或nil的都是真的。所以以下将全部执行大括号中的代码:

if (1) {...}
if (37) {...}
if (YES) {...}
if (true) {...}

布尔变量通常以前缀is命名,因此这具有自然的语法意义。在您的情况下,您可以解析

if (isCarryingMallet) {...}

作为

  

如果这家伙带着木槌,那么......

答案 1 :(得分:0)

方法isCarryingWeapon返回isCarryingSword布尔值的值。

getWeaponDamage方法中,您不需要进行显式比较,例如isCarryingMallet == TRUE,因为if语句将直接检查isCarryingMallet的值,并且该值将用作比较结果。换句话说,如果它为TRUE,则if语句的行为与在两个值之间进行比较并且该比较返回TRUE的行为相同。

答案 2 :(得分:0)

  

为什么“if(isCarryingMallet)”中没有“== YES”?

默认情况下,只有在条件为真时才会执行 if 中的语句。所以,

if (isCarryingMallet) { /* ... */ }

根据isCarryingMallet的值,执行语句。这样想 -

if ( true ) { /* ... */ } // if isCarryingMallet value is true

答案 3 :(得分:0)

  

“return isCarryingMallet;”是或否?

你的意思是返回哪个值?我们不知道。您的代码代码段中未设置值。

你的代码片段假定在其他地方我们会找到一些代码,将变量设置为YES或NO(实际上是数字,不是文本或真正的布尔值,因为C和Objective-C缺少真正的布尔值)。