愚蠢的问题:假设我在条件语句中分配var。我不知道条件是否会得到满足,我仍然希望定义var ..什么是正确的写作方式
示例:
NSDecimalNumber *number = [[NSDecimalNumber alloc]init]; // this is pointless right?
if(x == z){
number = [whatevernum1 decimalNumberByMultiplyingBy: whatevernum2];
} else {
number = [whatevernum2 decimalNumberByDividingBy: whatevernum3];
}
// do something with number variable.
答案 0 :(得分:2)
没有必要初始化number
,因为它将被设置。就这样做:
NSDecimalNumber *number;
if(x == z){
number = [whatevernum1 decimalNumberByMultiplying: whatevernum2];
} else {
number = [whatevernum2 decimalNumberByDividing: whatevernum3];
}
// do something with number variable.
在您的情况下,number
会以某种方式分配值。但是你可能会遇到这样的情况:
if (someCondition) {
// set number to value A
} else if (anotherCondition) {
// set number to value B
}
这里可能既不满足条件也不满足。在这种情况下,您需要通过将number
初始化为nil
来正确处理此问题。
NSDecimalNumber *number = nil;
if (someCondition) {
// set number to value A
} else if (anotherCondition) {
// set number to value B
}
if (number) {
// process result
}
答案 1 :(得分:0)
您需要声明变量但不要分配它,如下所示:
NSDecimalNumber *number;
if(x == z){
number = [whatevernum1 decimalNumberByMultiplying: whatevernum2];
} else {
number = [whatevernum2 decimalNumberByDividing: whatevernum3];
}
这告诉编译器你想使用一个名为number的变量,但还没有它的值。在某些情况下,您可能会发现将变量初始化为nil比将其保留为空指针更方便。
答案 2 :(得分:0)
正常情况下,正如其他人所指出的那样,你要么不会初始化(如果你可以保证你会设置一个值,例如通过if / else对),或者你会初始化为nil
。
在这个简单的例子中,三元语句会使你的代码更清晰:
NSDecimalNumber *number = x == z ? [whatevernum1 decimalNumberByMultiplyingBy:whatevernum2] : [whatevernum2 decimalNumberByDividingBy:whatevernum3];