1. ホーム
  2. if-statement

[解決済み] SwiftのIF LETはどのように評価されるのですか?

2022-03-05 20:34:57

質問

Swiftのサイトやここの様々な投稿でこのコードを見かけ、基本的なことを把握しようとしているところです。この行はどのように評価されるのでしょうか?

if let name = optionalName {

名前==オプション名ではなく、値を代入しているため、混乱しています。 john appleseedをnilに置き換えても等しくなるのに、なぜtrueにならないのでしょうか?

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello, \(name)"
}

解決方法は?

本質的には、この行は、"新しい変数を許可することができれば、と言っています。 name の非オプションバージョンに等しい。 optionalName の場合、それに対して次のようにします"。Martinが指摘したように、これは オプションのバインディング .

その唯一の目的は、オプショナル変数が実際の値を含んでいるかどうかをテストし、オプショナルでないフォームを一時変数にバインドすることです。これは、オプショナルをアンラップする、つまり、オプショナルに含まれる値にアクセスする安全な方法です。これは、いかなる種類の等質性のテストでもありません。これは、オプショナルに含まれる値が存在するかどうかをテストしているだけです。