2015-05-29 7 views
8

rozważyć to dwa kody:Jaka jest różnica między `if var` i` if let` in swift?

if let myValue = myObject.value as NSString?{ 
//logic here 
} 

vs

if var myValue = myObject.value as NSString?{ 
//logic here 
} 

znam słów kluczowych let jest zdefiniować stałą, to oznacza to, że w pierwszej linii kodu, jeśli myObject.value jest NSString The myValue stała będzie stała? To wygląda na zagmatwane.

+3

Twierdzę, że to nie jest duplikat [Jaka jest różnica między 'let' a' var' w swift?] (Http://stackoverflow.com/questions/24002092/what-is-the-difference- pomiędzy let-i-var-in-swift) – Krzak

+0

zobacz te samouczki: http://iosdevcenters.blogspot.in/2016/01/what-is-different-between-let-and-var.html –

+1

To nie jest duplikat postu "Jaka jest różnica między' let' a 'var'?" Opcjonalne powiązanie 'if let' i' if var' jest różne –

Odpowiedz

15

Jeśli używasz let wtedy nie będzie w stanie zmienić myValue.

if let myValue = myObject.value as NSString? { 
    myValue = "Something else" // <-- Compiler error 
} 

Z drugiej strony z var możesz.

if var myValue = myObject.value as NSString? { 
    myValue = "Something else" // <-- It's fine 
} 

Należy pamiętać, że nie istnieje tylko myValue w zakresie if i zmieniając jego wartość nie wywołuje efektu poza jego zakres.

Mam nadzieję, że to pomoże.

+1

Twoje (prawie) ostatnie zdanie jest błędne. Sprawdź http://swiftstub.com/774222102/ – Krzak

+1

W twoim przykładzie nie zmieniasz wartości 'test'. Zmieniasz wartość 'referenced' przez' test'. To jest inne. Myślę, że moje zdanie jest poprawne: jeśli zmienisz wartość 'myValue', nie uzyskasz efektów poza jej zakresem. –

+0

W każdym razie zrobiłeś sprytną obserwację. Zamierzam zaktualizować moją odpowiedź, aby dołączyć twój przykład. –

6

Do utworzenia stałej używa się let, więc w pierwszym przykładzie nie można zmienić myValue.

Podczas korzystania z var, myValue jest zmienną, którą można zmienić wewnątrz instrukcji if.

0

Typ zmiennej różni się w zależności od tego, czy używasz let, czy var.

Let jest ostateczny i nie można go później zmienić. var jest normalną zmienną.

Twoja wartość myValue nie może zostać zmieniona lub zmodyfikowana, jeśli używasz let in this statement.

0

Przykład pani powiedziała jest opcjonalne Oprawa

wiązaniami Opcjonalnie służy do sprawdzenia, czy opcjonalne zawiera wartość, a jeśli tak, aby wartość ta dostępna jako tymczasowy stała lub zmiennej.

if let myValue = myObject.value as NSString?{ 
//logic here 
} 

powyższy kod będzie wyodrębnić myObject.value jeśli istnieją jako stałej, natomiast poniżej kod będzie wyodrębnić myObject.value jak zmienna

if var myValue = myObject.value as NSString?{ 
//logic here 
} 
0

"Użyj , aby utworzyć stały i var, aby utworzyć zmienną. Wartość stałej nie musi być znana podczas kompilacji, ale trzeba ją przypisać dokładnie raz.

Oznacza to, że można użyć stałych do nazwania wartości określonej raz, ale w wielu miejscach.

var myVariable = 42 
myVariable = 50 
let myConstant = 42 

Stała lub zmienna muszą mieć ten sam typ, co wartość, którą chcesz przypisać.

Jednak nie zawsze trzeba pisać ten typ jawnie. Podanie wartości podczas tworzenia stałej lub zmiennej umożliwia kompilatorowi wnioskowanie o jego typie.

W powyższym przykładzie kompilator wywodzi, że myVariable jest liczbą całkowitą, ponieważ jego wartość początkowa jest liczbą całkowitą.

Przeczytaj: iBook Swift język programowania

Dzięki.

Powiązane problemy