Swift - opcje

Swift 4 wprowadza również Optionalstyp, który obsługuje brak wartości. Opcjonalne opcje mówią „istnieje wartość i równa się x” lub „nie ma żadnej wartości”.

Opcjonalny jest typem samym w sobie, a właściwie jednym z nowych wyliczeń o dużej mocy w Swift 4. Ma dwie możliwe wartości,None i Some(T), gdzie T jest skojarzoną wartością prawidłowego typu danych dostępną w Swift 4.

Oto opcjonalna deklaracja liczby całkowitej -

var perhapsInt: Int?

Oto opcjonalna deklaracja String -

var perhapsStr: String?

Powyższa deklaracja jest równoważna jawnemu zainicjowaniu jej do nil co oznacza brak wartości -

var perhapsStr: String? = nil

Weźmy następujący przykład, aby zrozumieć, jak działają opcje w Swift 4 -

var myString:String? = nil

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -

myString has nil value

Opcje są podobne do using nil ze wskaźnikami w Objective-C, ale działają dla każdego typu, nie tylko dla klas.

Wymuszone rozpakowanie

Jeśli zdefiniowałeś zmienną jako optional, aby uzyskać wartość z tej zmiennej, będziesz musiał unwrapto. Oznacza to po prostu umieszczenie wykrzyknika na końcu zmiennej.

Weźmy prosty przykład -

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -

Optional("Hello, Swift 4!")

Teraz zastosujmy rozpakowywanie, aby uzyskać poprawną wartość zmiennej -

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print( myString! )
} else {
   print("myString has nil value")
}

Gdy uruchomimy powyższy program przy użyciu placu zabaw, otrzymamy następujący wynik.

Hello, Swift 4!

Automatyczne rozpakowywanie

Możesz zadeklarować zmienne opcjonalne, używając wykrzyknika zamiast znaku zapytania. Takie opcjonalne zmienne rozpakują się automatycznie i nie trzeba używać żadnego dodatkowego wykrzyknika na końcu zmiennej, aby uzyskać przypisaną wartość. Weźmy prosty przykład -

var myString:String!
myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -

Hello, Swift 4!

Opcjonalne wiązanie

Użyj opcjonalnego powiązania, aby dowiedzieć się, czy opcja opcjonalna zawiera wartość, a jeśli tak, aby udostępnić tę wartość jako tymczasową stałą lub zmienną.

Opcjonalne wiązanie dla if oświadczenie jest następujące -

if let constantName = someOptional {
   statements
}

Weźmy prosty przykład, aby zrozumieć użycie opcjonalnego wiązania -

var myString:String?
myString = "Hello, Swift 4!"

if let yourString = myString {
   print("Your string has - \(yourString)")
} else {
   print("Your string does not have a value")
}

Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -

Your string has - Hello, Swift 4!