Latest web development tutorials

Swift opcjonalne (opcjonalne) Typ

Swift opcjonalne (opcjonalnie) typ, wykorzystywane podczas obsługi brakujących wartości. Opcjonalny środek ", w których nie ma wartość i jest równa X" lub "nie ma wartości".

Swfit język sufiks definicja? Opcjonalnie jako nazwanego rodzaju skrót, innymi słowy, następujące dwie instrukcje są równoważne:

var optionalInteger: Int?
var optionalInteger: Optional<Int>

W obu przypadkach są opcjonalne zmienna optionalInteger typu całkowitą. Należy zauważyć, że w tym typie i? Nie ma przestrzeni pomiędzy.

Opcjonalnie jest wyliczenie zawierający obu przypadkach None, a niektóre (t), służy do wskazania, że ​​może, ale nie mają wartości. Każdy typ może być jawnie zadeklarowane jako (lub niejawna konwersja) opcjonalnego typu. Kiedy deklarujesz opcjonalny rodzaj czasu, należy użyć nawiasów? Operator odpowiedni zakres. Na przykład, opcjonalny deklaracji tablicy całkowitą, powinno być napisane (int []); zapisana jako int [] błąd.

Kiedy deklarujesz zmienną lub opcjonalne opcjonalne atrybuty nie są dostępne, gdy wartość początkowa, jego domyślną wartość zero.

Opcjonalnie kontynuacją porozumienia LogicValue, może pojawić się w kontekście logicznym. W tym przypadku, jeśli opcjonalny typ T? Zawierać dowolny typ wartości T (czyli jego wartość jest Optional.Some (T)), ten typ opcjonalny równa się prawdą, w przeciwnym razie false.

Jeśli opcjonalny wystąpienie typu, który zawiera wartość, można użyć operatora postfix! Aby uzyskać dostęp do wartości w następujący sposób:

optionalInteger = 42
optionalInteger! // 42

Użyj operatora! Aby nabyć opcjonalny zmienną jest zerowa nie zostanie uruchomiony w czasie błędów.

Można użyć opcjonalnego łącza i opcjonalnej wiążą selektywnie do wykonywania operacji na opcjonalnym wypowiedzi. Jeśli wartość wynosi zero, żadne operacje są realizowane, nie będą uruchamiane błąd.

Rzućmy okiem na poniższych przykładach, aby dowiedzieć Swift opcjonalne typy aplikacji:

import Cocoa

var myString:String? = nil

if myString != nil {
    print(myString)
}else{
    print("字符串为 nil")
}

Powyższe wyniki wykonania programu:

字符串为 nil

Opcjonalnie typ jest podobna do wartości zerowe wskaźników w Objective-C, ale tylko do klasy (klasa zerowa) przydatne, ale są dostępne opcjonalnie dla wszystkich rodzajów typów i bardziej bezpieczne.


Zmuszony do rozwiązania

Po określeniu typu nie zawierają wartości opcjonalne, można dodać opcjonalną nazwę za wykrzyknikiem (!), Aby uzyskać wartość. Wykrzyknik powiedział: "Wiem, że istnieją wartości opcjonalne, używaj go." To się nazywa obowiązkowe Wartość opcjonalna analizowana (wymuszone rozpakowaniu).

Przykłady są następujące:

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

Powyższe wyniki wykonania programu:

Optional("Hello, Swift!")

Przymusowe analityczne wartości opcjonalne, należy użyć wykrzyknika (!):

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   // 强制解析
   print( myString! )
}else{
   print("myString 值为 nil")
}

Powyższe wyniki wykonania programu:

Hello, Swift!

Uwaga:
Użyj ! Aby uzyskać nieistniejącej wartości opcjonalne spowoduje błędu wykonawczego. Użyj ! Przed wymusić wartość analityczną, należy określić, ewentualnie zawierać niebędącą nil wartość.


automatycznie analizowania

Można zastąpić znakiem zapytania, kiedy zadeklarować zmienną opcjonalnego wykrzyknikiem (!) (?). Przy zastosowaniu tego opcjonalnego zmiennych, których nie potrzebujesz oraz stanowisko wykrzyknik (!) Aby uzyskać wartość, zostanie ona automatycznie zanalizować.

Przykłady są następujące:

import Cocoa

var myString:String!

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

Powyższe wyniki wykonania programu:

Hello, Swift!

opcjonalnie Bind

Korzystanie z opcjonalnych wiązania (opcjonalnie wiążących) w celu określenia, czy dany typ opcjonalny zawiera wartość, jeśli zawiera wartość przypisaną do tymczasową zmienną lub stałą. Opcjonalnie wiązania mogą być stosowane, jeśli i gdy sprawozdanie ocenić wartość opcjonalnego typu i przypisać wartość stałą lub zmienną.

Podobnie jak to, że jeśli pisemnego oświadczenia w opcjonalny wiązania:

if let constantName = someOptional {
    statements
}

Spójrzmy na prosty przykład alternatywnej Oprawa:

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if let yourString = myString {
   print("你的字符串值为 - \(yourString)")
}else{
   print("你的字符串没有值")
}

Powyższe wyniki wykonania programu:

你的字符串值为 - Hello, Swift!