这是代码的一小部分:
@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)
。
感谢您回答我的新问题!
答案 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缺少真正的布尔值)。