次のコードを試したところ、エラーが発生しました。nilオブジェクトコンパイラが "未解決の識別子"と表示されました。何が起こったのですか?
var possibleNumber = "Hello World!"
if let actualNumber: Int = Int(possibleNumber) {
print("\"\(possibleNumber)\" has an integer value of \(actualNumber)")
} else {
print("\"\(possibleNumber)\" could not be converted to an integer")
}
print(actualNumber) // **Here comes the compile time error**
エラー:
use of unresolved identifier 'actualNumber'
オブジェクトactualNumber背後に何が起こっていますか?私はオプションのバインディングの最初の部分でそれを宣言しました: "もしlet actualNumber:Int ....."なら、それはなぜ "未解決"ですか?うーん... "解決されていない"それは正確に何ですか?
私は何とか間違って印刷されていると思いますが、それはなぜ間違っていますか?知りません。誰かがこれをもう少し説明できますか?そしてBTWはactualNumberの中に実際には何もないのですか?もしそうなら、どうすればそれを見ることができますか?
'actualNumber'は' if'のスコープ内で別名で定義されたスコープ内にのみ存在します。単に存在しない場合は、そのスコープ内に定義された関連する変数がないため、コンパイラは名前を解決できません。 – luk2302
@ luk2302今、私は他の部分の本文をprint(actualNumber)に変更しましたが、まだ "解決されていません...."と言われています。それはまだ "if"の範囲外です。 – SLN
私はあなたがサンプルコード[オプションのバインディングのドキュメントから](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5- ID333)。あなたが少し読書を続けているなら、あなたは "* if文の中でのみ使用可能な*定数と変数は、if文の中でのみ利用可能です。ガード・ステートメントを使用して、ステートメントの有効範囲外のオプションのバインドされた変数を使用することができます。 – Hamish