上QQ阅读APP看书,第一时间看更新
3.2 条件语句
判断代码执行的逻辑时,条件的设定是非常重要的,比如,不是友机并不意味着要摧毁,但如果是敌机,则摧毁是必需的,所以,我们可以快速地判断它是不是敌机,而不是判断是否为友机。
在Objective-C代码中,对于条件的判断,可以有两种方法:
❑ 使用if语句结构。
❑ 使用?:运算符。
■3.2.1 if语句
if语句的基本应用格式如下。
if (<条件>) { <语句块> }
当<条件>成立(YES),就执行<语句块>,然后执行}后面的代码。如果<条件>不成立(NO),就直接执行}后面的代码。
如下面的代码,如果是敌人,就开火摧毁。
BOOL isEnemy = YES; if (isEnemy) { NSLog(@"开火并摧毁"); }
如果不是敌机怎么办呢?我们可以添加else语句,如下面的代码。
BOOL isEnemy = NO; if (isEnemy) { NSLog(@"开火并摧毁"); } else { NSLog(@"不是敌机,允许登舰"); }
更复杂的情况下,会有多个条件,可以在结构中添加else if语句,如下面的代码。
if (<条件1>) { <语句块1> }else if (<条件2>) { <语句块2> }else if (<条件n>) { <语句块n> }else { <语句块n+1> }
在这种if语句结构中,else if可以有多个,也可以没有,每一个条件都对应了一个需要执行的语句块。else语句只能放在所有条件的后面,而且只能有一个,当所有条件都不满足时,会执行<语句块n+1>。
此外,对于条件的判断还可以嵌套使用,如下面的代码。
BOOL isEnemy = NO; NSInteger tarmacNumber = 10; if (isEnemy) { NSLog(@"开火并摧毁"); } else { if (tarmacNumber > 0){ NSLog(@"请在 %li号专用停机坪降落", tarmacNumber); } else { NSLog(@"请在公共停机坪降落"); } }
下面的代码,演示了如何使用复合条件判断一个年份是否为闰年。
int year = 2016; if ((year % 100 ! = 0 && year % 4 == 0) || year % 400 == 0) { NSLog(@"%i年是闰年", year); } else { NSLog(@"%i年不是闰年", year); }
如果大家在工作中需要更多关于日期的操作,第9章会讨论相关内容。
■3.2.2 ? :运算符
对于简单的if-else语句结构,我们可以使用?:运算符代替,它是唯一的一种三元运算符,需要三个表达式参加运算,其应用格式如下。
<表达式1> ? <表达式2> : <表达式3>
其中,<表达式1>为逻辑表达式,其结果应该是BOOL类型,当其值为YES时,整个表达式的运算结果就是<表达式2>的值。如果<表达式1>的值为NO,整个表达式的运算结果就是<表达式3>的值。如下面的代码。
BOOL isEnemy = NO; isEnemy ? NSLog(@"开火并摧毁") : NSLog(@"不是敌机,允许登舰");
请注意,如果表达式的代码稍微有一点点复杂,可以使用小括号()将三个表达式分别包装一下。