Menu
CoddyTech

Nil合体演算子

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

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

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

nickname は nil なので、演算子は代わりに "Guest" を返します。nickname に値が入っていた場合は、その値が使われます。

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

nil合体演算子は、代替値が必要な場合の1行のコードに最適です。単にnilをデフォルト値に置き換えたいときは、if let文を書くよりもすっきりします。デフォルト値がオプショナルでなければ、結果もオプショナルではないため、さらにアンラップせずにそのまま使えます。

challenge icon

チャレンジ

簡単
オプショナルなusernameとdefaultNameを受け取り、nil 合体演算子を使って適切な表示名を返す関数getDisplayNameを書きましょう。

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

引数:

  • username (String):ユーザーの名前(空文字列はnilを表します)
  • defaultName (String):代わりに使用する名前

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

ヒント:関数内で、ユーザー名をString?型の変数に格納し、ユーザー名が""と等しい場合は、簡単なifを使ってその変数にnilを設定します。その後、??を使って代替値を指定します。

自分で試してみよう

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

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

基礎のすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド