Nil合体演算子
CoddyのSwiftジャーニー「基礎」セクションの一部。レッスン 14/86。
オプショナルがnilの場合に、複数行のコードを書かずにデフォルト値を提供したいことがあります。Swiftのnil合体演算子(??)はまさにそれを行います。値がある場合はオプショナルをアンラップし、nilの場合はデフォルト値を返します。
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guestnickname は nil なので、演算子は代わりに "Guest" を返します。nickname に値が入っていた場合は、その値が使用されます。
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCodernil合体演算子は、フォールバック値が必要な1行のコードに最適です。単にnilをdefaultに置き換えたい場合、if let文を書くよりも簡潔です。結果は常に非optional値になるため、さらにアンラップせずにそのまま使用できます。
チャレンジ
簡単オプショナルな username と defaultName を受け取り、nil 合体演算子を使用して適切な表示名を返す関数 getDisplayName を作成してください。
username が空(空の文字列 "" で表される)の場合は、nil として扱い、defaultName を返してください。それ以外の場合は、username を返してください。
パラメーター:
username(String): ユーザーの名前(空の文字列は nil を表します)defaultName(String): フォールバックとして使用する名前
戻り値: username が空でない場合は username、それ以外の場合は defaultName。
ヒント: 関数内で、username を String? 型の変数に格納し、username が "" と等しい場合は、単純な if を使ってその変数を nil に設定してください。その後、?? を使ってフォールバックを指定します。
自分で試してみよう
func getDisplayName(username: String, defaultName: String) -> String {
// ここにコードを書いてください
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Swiftプレイグラウンド