cor*_*erg 8 conditional if-statement objective-c conditional-operator inline-if
使用'?:'条件和简单的'if-then-else'语句之间有区别吗?它只是另一种方式,或者它实际上使用更少的空间/花费更少的时间来阅读比'if'语句?
例:
如果声明:
if (item1.isEqualToString:@"2") //If statement
[self doSomething];
else
[self doSomethingElse];
item1.isEqualToString:@"2" ? [self doSomething] : [self doSomethingElse]; //'?:' statement
Run Code Online (Sandbox Code Playgroud)
Jac*_*ack 17
是,有一点不同.
语义上是if/else语句的意思
if (condition)
statements
else
statements
Run Code Online (Sandbox Code Playgroud)
而三元条件是
condition ? expression : expression
Run Code Online (Sandbox Code Playgroud)
因此,您可以将?:运算符的结果分配给某些内容,而不能使用if语句执行此操作.实际上?:运算符本身就是一个表达式,所以你可以将它嵌套在其他表达式中,甚至是其他的?:运算符.
?:也是类型检查,这个
condition ? [self methodThatReturnsVoid] : [self methodThatReturnsInt]
Run Code Online (Sandbox Code Playgroud)
由于结果类型可能会根据条件发生变化,因此会引发错误.
杰克建议,有一点不同.您可以将?:
运算符重写为:
ExpressionType temp;
if (condition) {
temp = trueExpression;
}
else {
temp = falseExpression;
}
lvalue = temp; // (Where "lvalue" refers to the receiver of the resulting value)
Run Code Online (Sandbox Code Playgroud)
至于效率,几个机器指令集的?:
硬件实现版本用于简单的情况,但不适用于更复杂的情况(他们会使用类似于上面的东西),因此很难说哪个更有效.
?:
运算符的主要优点是它允许将条件操作嵌入到表达式中,而不必使用if/else分解表达式,这可以使概念上(和视觉上)更简单的代码,即使实际的机器复杂性并没有显着(如果有的话)减少.
归档时间: |
|
查看次数: |
16740 次 |
最近记录: |