2017-09-19 1 views
-2

ich zu verwirren versucht, um mit Swift Code und ich frage mich, was dieses Stück Code tut:Expose eine Variable eines Außen if-Anweisung

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

Ich weiß es die Koordinate wird, aber mehr einfach . Was bedeutet die Aussage?

Weil, wenn ich versuche, dies zu tun:

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

die letzte Zeile wird einen Fehler erzeugen sagen: „Die Verwendung von ungelösten Bezeichner‚locVariable‘“

Gibt es eine Möglichkeit locVariable zur Verfügung zu stellen global und nicht nur in der if-Anweisung verfügbar sein?

Entschuldigung, Neuling hier. Und würde gerne von euch lernen.

+0

Swift Aussagen: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/doc/uid/TP40014097-CH33-ID434 – Moritz

+0

Hallo . Ich kenne die Grundlagen von if-Anweisungen. Ich frage mich nur, warum ich eine Variable, die sich innerhalb der if-Anweisung befindet, nicht außerhalb davon verwenden kann. Außerdem möchte es vereinfacht und relevant für den Beispielcode wie oben erläutert werden. – Artvader

+0

Ich weiß, es ist ein wesentliches Konzept in OOP und tatsächlich ein grundlegendes Verständnis von was Scoping ist (was bedeutet, dass Sie nicht die Variable außerhalb davon, wo Sie es deklariert). Ich habe nur gehofft, dass es eine praktische Möglichkeit gibt zu erklären, was das bedeutet, wenn man ein Buch liest und es jemandem auf praktische Art und Weise erklären lässt, ist viel besser. Ich lerne besser durch Beispiele. :) – Artvader

Antwort

1

Versuchen guard für diesen Fall zu verwenden:

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

Danke. Obwohl es nicht erklärt, was mein Beispielcode tut, gibt es mir eine Alternative, um es herumzugehen. – Artvader

1

Dies ist ein von https://andybargh.com/lifetime-scope-and-namespaces-in-swift/ plagiiert kleiner Abschnitt ist den ganzen Abschnitt lesen Sie bitte. Ich hoffe, es hilft Ihnen einen Einstieg für das Verständnis des Begriffs Umfang zu geben.

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

Ja. Dieser ist aufgrund seiner Struktur ziemlich einfach zu verstehen. Vielen Dank. – Artvader