次のような値を割り当てる方法を見つけました。
NSString *result = [self string] ?: @"none";
[self string]
nil に等しくない値を返す場合、結果はその戻り値になり、それ以外の場合は @"none" になります。Pythonor
の演算子と同じです。
いくつかのケースでテストしましたが、正常に動作します。お気に入り:
int a = 10 ?: 0; // a is 10
int a = 0 ?: 5; // a is 5
NSString *str = @"abc" ?: 10; // warning: incompatible pointer. It has type checking?
しかし、この構文に関する関連ドキュメントや情報は見つかりませんでした。それで、なぜそれが機能するのか疑問に思いました。誰かがそれを説明できますか?