bool値による分岐
okの例
var boolValue = true
var ret1 = boolValue ? "a" : "b" // ret1 = "a"
var ret2 = !boolValue ? "a" : "b" // ret2 = "b"
- 論理否定演算子「!」もC, Objective-Cと同じように使えます。
構文エラーの例
var boolValue = true
var ret1 = boolValue? "a" : "b" // 構文エラー
var ret2 = !boolValue? "a" : "b" // 構文エラー
- 変数名の直後に半角スペースを置かずに?をつけると、「オプショナル型の宣言」と解釈されるためエラーになる。
- 三項演算子の場合は?の前に半角スペースを忘れずに
nilかどうかによる分岐
okの例
var stringValue : String? = "hogehoge" // Optional型
var ret = stringValue ? "a" : "b" // ret = "a"
stringValue = nil
var ret2 = stringValue ? "a" : "b" // ret = "b"
構文エラーの例
var stringValue : String = "hogehoge" // Optional型ではない
var ret = stringValue ? "a" : "b" // 構文エラー: Type 'String' does not conform to protocol 'LogicalValue'
- 評価に使う値がOptional型か否かによって挙動が異なる。
- Optional型の場合、nilの場合はfalse、nil以外はtrueと評価される。
- Optional型ではない場合は構文エラー。Optional型ではない値は、true/falseの評価には使えない。
文字列一致による分岐
okの例
var stringValue : String = "hogehoge"
var ret1 = stringValue == "hogehoge" ? "a" : "b" // ret1 = "a"
var ret2 = stringValue == "Hogehoge" ? "a" : "b" // ret2 = "b"
- 値が等しいか判断する"=="演算子は大文字小文字を区別します
まとめ
- Swiftの三項演算子はCやObje-Cと同じように使えますが、Optionalの?には注意しましょう。
- 例によって、気になる点がありましたら気軽にコメントください!