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をデフォルト値に置き換えたいときは、if let文を書くよりもすっきりします。デフォルト値がオプショナルでなければ、結果もオプショナルではないため、さらにアンラップせずにそのまま使えます。
チャレンジ
簡単オプショナルなusernameとdefaultNameを受け取り、nil 合体演算子を使って適切な表示名を返す関数getDisplayNameを書きましょう。
ユーザー名が空(空文字列""で表される)の場合は、nilとして扱い、デフォルト名を返します。それ以外の場合は、ユーザー名を返します。
引数:
username(String):ユーザーの名前(空文字列はnilを表します)defaultName(String):代わりに使用する名前
戻り値:ユーザー名が空でない場合はユーザー名、そうでない場合はdefaultName。
ヒント:関数内で、ユーザー名をString?型の変数に格納し、ユーザー名が""と等しい場合は、簡単なifを使ってその変数にnilを設定します。その後、??を使って代替値を指定します。
自分で試してみよう
func getDisplayName(username: String, defaultName: String) -> String {
// ここにコードを書いてください
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Swiftプレイグラウンド