2 つの配列がを比べて「同じ要素」があるかないか? あるなら、最初に見つかった要素は何か? を調べたいとする。
これを for 文で書くとこんな風に長いコードを書く必要が出てくる (Goto 文を使う是非は置いといて...)。
NSArray *numbers = @[@1, @2, @3, @4, @5, @6];
NSArray *targets = @[@3, @4, @9];
NSNumber *result = nil;
for (NSNumber *n in numbers) {
for (NSNumber *m in targets) {
if ([n isEqual:m]) {
result = n;
goto objectFound;
}
}
}
objectFound:;
NSLog(@"first object: %@", result);
first object: 3
実は Objective-C には、こういう目的に合ったメソッドが用意されている。それが firstObjectCommonWithArray:
。これを使って上のコードを書き直すと、for 文が一行にまとめられる:
NSArray *numbers = @[@1, @2, @3, @4, @5, @6];
NSArray *targets = @[@3, @4, @9];
NSNumber *result = [numbers firstObjectCommonWithArray:targets];
NSLog(@"first object: %@", result);
first object: 3
もし見つからなかった場合は nil
が返る。便利!
No comments:
Post a Comment