if let によるアンラップ
CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 12/86。
オプショナルの中の値に安全にアクセスするために、if letを使用します。これはオプショナルバインディングと呼ばれる手法です。これは、オプショナルに値が含まれているかどうかを確認し、値がある場合はそれを一時的な定数にアンラップします。
var username: String? = "Swift_Dev"
if let name = username {
print("Welcome, \(name)")
} else {
print("No username found")
}
// Welcome, Swift_Devここでは、if let は username が値を持っているかどうかをチェックします。値を持っているため、その値は name にアンラップされます。name は if ブロックの中だけに存在します。もし username が nil であれば、代わりに else ブロックが実行されます。
var age: Int? = nil
if let unwrappedAge = age {
print("Age is \(unwrappedAge)")
} else {
print("Age not provided")
}
// 年齢が提供されていませんage が nil であるため、条件は失敗し、else ブロックが実行されます。これにより、欠損値を直接使用しようとした場合に発生するクラッシュを防ぐことができます。
チャレンジ
簡単以下の変数が提供されています:
var nickname: String? = "CoddyLearner"if let を使用して nickname を安全にアンラップしてください。値が含まれている場合は、Hello, [value]! と出力してください(ここで [value] はアンラップされたニックネームです)。もし nil の場合は、No nickname set と出力してください。
チートシート
if let(オプショナルバインディング)を使用して、オプショナルを安全にアンラップし、その値にアクセスします:
var username: String? = "Swift_Dev"
if let name = username {
print("Welcome, \(name)")
} else {
print("No username found")
}
// Welcome, Swift_Devオプショナルに値が含まれている場合、その値はifブロック内でのみ存在する一時的な定数にアンラップされます。オプショナルがnilの場合、elseブロックが実行されます:
var age: Int? = nil
if let unwrappedAge = age {
print("Age is \(unwrappedAge)")
} else {
print("Age not provided")
}
// Age not provided自分で試してみよう
var nickname: String? = "CoddyLearner"
// TODO: 以下にコードを書いてください
// if let を使用して nickname を安全にアンラップしてください
// 値が含まれている場合は、"Hello, [value]!" と出力してください
// nil の場合は、"No nickname set" と出力してくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。