0Pricing
Swift Academy · レッスン

ネストした三項演算子を避ける

条件ロジックを読みやすく、保守しやすく保ちます。

「ネストした三項演算子を避ける」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Bool値と式
  2. 三項条件演算子
  3. ネストした三項演算子を避ける
  4. Booleanメソッドと切り替え
← Swift Academyに戻る