在速度方面,使用if/else
语句和Objective C中的ternary operator
之间有什么区别吗?它们在编译代码中是否相同?
也就是说,除了节省空间之外,是否有任何理由使用以下其中一种?
//First Option
Object *myObj = boolean ? trueValue : falseValue;
//Second Option
Object *myObj;
if (boolean) {
myObj = trueValue;
else {
myobj = falseValue;
}
答案 0 :(得分:1)
尽管编译代码可能存在细微差别,但除了可读性之外没有理由偏向于另一种方式。
if
/ else
方法的一个优点是您可以使用单个条件设置多个变量:
Object *myObj1;
Object *myObj2;
if (boolean) {
myObj1 = trueValue1;
myObj2 = trueValue1;
else {
myobj1 = falseValue2;
myobj2 = falseValue2;
}
由于Objective-C中的boolean是一个值为0和1的数字类型,因此有一种方法根本不依赖于条件:
Object *valArray[] = { falseValue, trueValue };
Object *myObj = valArray[boolean];