0

愚かな質問: 条件ステートメントで 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.
4

3 に答える 3

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
}
于 2013-07-23T21:42:37.983 に答える
0

次のように、変数を宣言する必要がありますが、代入する必要はありません。

NSDecimalNumber *number;

if(x == z){
    number = [whatevernum1 decimalNumberByMultiplying: whatevernum2];
} else {
    number = [whatevernum2 decimalNumberByDividing: whatevernum3];
}

これは、number という名前の変数を使用したいが、まだ値がないことをコンパイラーに伝えます。場合によっては、変数をヌル ポインターのままにしておくよりも、変数を nil に初期化する方が便利な場合があります。

于 2013-07-23T21:40:02.523 に答える
0

通常、他の人が指摘したように、初期化しないか (たとえば、if/else ペアを介して値を設定することを保証できる場合)、または に初期化しnilます。

この単純なケースでは、三項ステートメントを使用すると、コードがより明確になります。

NSDecimalNumber *number = x == z ? [whatevernum1 decimalNumberByMultiplyingBy:whatevernum2] : [whatevernum2 decimalNumberByDividingBy:whatevernum3];
于 2013-07-23T23:53:57.923 に答える