sのプリミティブな合計を返す単純な関数がありますが、NSNumber
-1の場合はカウントされません。
- (NSInteger)total {
return [[self obj1] integerValue] == -1 ? 0 : [[self obj1] integerValue] +
[[self obj2] integerValue] == -1 ? 0 : [[self obj2] integerValue] +
[[self obj3] integerValue] == -1 ? 0 : [[self obj3] integerValue];
}
この場合、total
常に0を返します。
しかし、私がこのように書くと:
- (NSInteger)total {
NSInteger ret = 0;
ret += [[self obj1] integerValue] == -1 ? 0 : [[self obj1] integerValue];
ret += [[self obj2] integerValue] == -1 ? 0 : [[self obj2] integerValue];
ret += [[self obj3] integerValue] == -1 ? 0 : [[self obj3] integerValue];
return ret;
}
total
正しい値を返します。
私はそれを一方の方法で書くことを好みませんが、最初の方法の何が悪いのかわかりません。