?:
諸事情でBlocksKitのソースを見てたら、
1 |
id value = block(obj) ?: [NSNull null]; |
というコードがあった。
1 |
id value = block(obj) ? block(obj) : [NSNull null]; |
と同じ意味らしい。こんな書き方できたのか…。
つまり、よく書くシングルトンの初期化も、
1 2 3 4 5 6 7 8 9 |
+ (instancetype)sharedClient { static dispatch_once_t predicate; dispatch_once(&predicate, ^{ if (!sharedInstance) { sharedInstance = [[self alloc] init]; } }); return sharedInstance; } |
じゃなく、
1 2 3 4 5 6 7 |
+ (instancetype)sharedClient { static dispatch_once_t predicate; dispatch_once(&predicate, ^{ sharedInstance = sharedInstance ?: [[self alloc] init]; }); return sharedInstance; } |
とか書けるわけか。
知らなかった。恥ずかしい。
最近のコメント