ネストした三項演算子を避ける
条件ロジックを読みやすく、保守しやすく保ちます。
「ネストした三項演算子を避ける」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
三項演算子が役立つ場面
単純な2択には、三項演算子を1つ使うとすっきりして読みやすくなります。問題は、三項演算子の中に別の三項演算子をネストしたときに始まります。
let temp = 10
let label = temp < 0 ? "Freezing" : "Above zero"
print(label)ネストした三項演算子
2つを超えるケースに対応するため、三項演算子をネストすることはできますが、結果はすぐに読みにくくなります。
let score = 75
let grade = score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "F"
print(grade)ネストが問題になる理由
ネストした三項演算子では、どのコロンがどの疑問符に対応するのかを、読み手が頭の中で追わなければなりません。小さな間違いでも、動作が気付かないうちに変わってしまいます。
巧妙さよりも明確さを優先してください。
let value = 5
let text = value > 0 ? "positive" : value < 0 ? "negative" : "zero"
print(text)if/else ifにリファクタリングする
同じ多方向の判断でも、if / else if / elseの連鎖として書くと、はるかに読みやすくなります。各分岐がそれぞれ独立した行になります。
let score = 75
let grade: String
if score >= 90 {
grade = "A"
} else if score >= 80 {
grade = "B"
} else if score >= 70 {
grade = "C"
} else {
grade = "F"
}
print(grade)代わりにswitchを使う
範囲に基づく判断では、範囲を対象にしたswitchが最もすっきりした選択肢になることがよくあります。
let score = 85
let grade: String
switch score {
case 90...100: grade = "A"
case 80..<90: grade = "B"
case 70..<80: grade = "C"
default: grade = "F"
}
print(grade)関数に切り出す
判断処理を再利用する場合は、意味の分かる名前の関数に移します。呼び出し側のコードが自己説明的になります。
func gradeLetter(for score: Int) -> String {
if score >= 90 { return "A" }
if score >= 80 { return "B" }
if score >= 70 { return "C" }
return "F"
}
print(gradeLetter(for: 64))三項演算子を1つ使うのは問題ない
「三項演算子を決して使わない」というルールではありません。明確な2択に対して、平坦な三項演算子を1つ使うのは、Swiftではまったく自然な書き方です。
let isAdmin = true
let role = isAdmin ? "Admin" : "User"
print(role)簡潔さよりも読みやすさを優先する
コードは短ければ常に良いとは限りません。レビュアーが1行の意味を解読するために立ち止まる必要があるなら、長くても明確な書き方を選んでください。
let stock = 0
let availability = stock > 0 ? "In stock" : "Sold out"
print(availability)三項演算子で副作用を避ける
三項演算子の両方の分岐は、単純な値に保ってください。副作用のある関数呼び出しを三項演算子の中に隠すと、コードの動作が予想しにくくなります。
let level = 2
let points = level == 1 ? 100 : 200
print(points)名前付きの条件と組み合わせる
条件が複雑な場合は、まず名前付きのBoolに保存してから、1つの三項演算子で使います。名前が意図を説明してくれます。
let age = 20
let hasLicense = true
let eligible = age >= 18 && hasLicense
let result = eligible ? "Approved" : "Denied"
print(result)明確な多方向分岐の例
この読みやすいifの連鎖を、先ほどのネストした三項演算子と比較してください。どちらも同じ結果を返しますが、こちらのほうが保守しやすくなっています。
let value = -3
let sign: String
if value > 0 {
sign = "positive"
} else if value < 0 {
sign = "negative"
} else {
sign = "zero"
}
print(sign)確認問題
最適な方法を選んでください。
まとめ: ネストした三項演算子を避ける
2択には、平坦な三項演算子を1つ使います。3つ以上のケースには、if/else ifまたはswitchを使ってください。将来の自分が論理を追えるよう、読みやすさを優先しましょう。
let n = 7
let parity = n % 2 == 0 ? "even" : "odd"
print(parity)よくある質問
「ネストした三項演算子を避ける」レッスンは無料ですか?
はい。「ネストした三項演算子を避ける」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「ネストした三項演算子を避ける」で何を学びますか?
条件ロジックを読みやすく、保守しやすく保ちます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ネストした三項演算子を避ける」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Bool値と式
- 三項条件演算子
- ネストした三項演算子を避ける
- Booleanメソッドと切り替え