Menu
Coddy logo textTech

Nil合体演算子

CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 14/86。

オプショナルが nil のときに、複数行のコードを書かずにデフォルト値を提供したい場合があります。Swiftのnil合体演算子 (??) は、まさにそれを行います。値がある場合はオプショナルをアンラップし、nil の場合はデフォルト値を返します。

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

nicknamenil であるため、演算子は代わりに "Guest" を返します。もし nickname に値がある場合は、その値が使用されます。

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

nil合体演算子は、フォールバック値が必要なワンライナーに最適です。単に nil をデフォルト値に置き換えたい場合、if let 文を書くよりも簡潔です。結果は常に非オプショナル値になるため、それ以上のアンラップをすることなく直接使用できます。

challenge icon

チャレンジ

簡単

オプショナルのusernamedefaultNameを受け取り、nil合体演算子を使用して適切な表示名を返す関数getDisplayNameを作成してください。

ユーザー名が空(空文字列""で表される)の場合は、nilとして扱い、デフォルト名を返します。そうでない場合は、ユーザー名を返します。

パラメータ:

  • username (String): ユーザーの名前(空文字列はnilを表します)
  • defaultName (String): 使用するフォールバック名

戻り値: ユーザー名が空でない場合はそのユーザー名、そうでない場合はdefaultName

ヒント: 関数内でユーザー名をオプショナルに変換してください。もし空であれば、nilにします。その後、??を使用してフォールバックを提供します。

チートシート

Nil結合演算子 (??) は、オプショナルに値がある場合はそれをアンラップし、nil の場合はデフォルト値を返します。

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

オプショナルに値がある場合は、代わりにその値が使用されます。

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

結果は常に非オプショナル値になるため、単純なフォールバックのシナリオでは if let よりも簡潔に記述できます。

自分で試してみよう

func getDisplayName(username: String, defaultName: String) -> String {
    // ここにコードを記述してください
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン