声明

2017-09-19 15 views
-2

私はスウィフトコードで周りの混乱にしようとしていると私は、コードのこの作品が何を思ったんだけど場合の外で変数を公開:声明

if let location = locations.first { 
    var locVariable = location.coordinate 
} 

私はもっと単純に座標を取得します知っているが、 。この声明はどういう意味ですか?私はこれを行うにしようとするので

if let location = locations.first { 
    var locVariable = location.coordinate 
} 
print(locVariable) 

最後の行は「未解決の識別子の使用 『locVariable』を」というエラーが生成されます

がグローバルlocVariableを利用できるようにする方法はありますし、 if文の中で利用できるだけではありませんか?

申し訳ありません、新規ユーザーはこちらです。そして皆さんから学ぶのが大好きです。

+0

スウィフト文:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/doc/uid/TP40014097-CH33-ID434 – Moritz

+0

こんにちは。私はifステートメントの基礎を知っています。私はなぜ、if文の中にある変数をそれの外側で使用することができないのだろうかと思っています。また、より単純な方法で説明され、上記のサンプルコードに関連しています。 – Artvader

+0

私はそれがOOPの必須コンセプトであり、実際にスコープが何であるかを基本的に理解しています。つまり、宣言した場所以外の変数ではありません。私はちょうど、これが何を本を読んでいるのかを説明する実践的な方法があることを望んでいました。私は例を通してより良く学びます。 :) – Artvader

答えて

1

は、この場合のためにguardを使用してみてください:

guard let location = locations.first else { return } 
var locVariable = location.coordinate 
print(locVariable) 
+0

ありがとうございます。私のサンプルコードが何をしているのか説明していませんが、それを回避するための代替手段があります。 – Artvader

1

これは https://andybargh.com/lifetime-scope-and-namespaces-in-swift/ から盗用小さなセクションであるセクション全体をお読みください。 私はそれがあなたにスコープの概念を理解するための初心者を与えるのに役立つことを望みます。

let three = 3 // global scope 
print("Global Scope:") 
print(three) // Legal as can see things in the same or enclosing scope. 
func outerFunction() { 
    print("OuterFunction Scope:") 
    var two = 2 // scoped to the braces of the outerFunction 
    print(two) // Legal as can see things in the same or enclosing scope. 
    print(three) // Also legal as can see things in same or enclosing scope. 
    if true { 
     print("If Statement Scope:") 
     var one = 1 // scoped to the braces of the `if` statement. 
     print(one) // Legal as can see things in the same or enclosing scope. 
     print(two) // Legal as can see things in same or enclosing scopes. 
     print(three) // Also legal for the same reason. 
    } 
    // print(one) - Would cause an error. Variable `one` is no accessible from outer scope. 
} 
// print(two) - Would cause an error. Variable `two` is not accessible from outer scope. 
+0

うん。これは、構造化されているために理解しやすいです。ありがとう。 – Artvader