Swift: Tuple

Znany również jako Struct Lite ™ (ale nie do końca)

Typy krotek są w pewnym sensie obcą koncepcją dla programistów Objective-C i czasami mogą być mylone z structlub class. Ale w rzeczywistości są znacznie bardziej podstawowe niż oba. Lubię myśleć o nich jako o miniaturowej strukturze lub Struct Lite ™, którą należy wykorzystać w minimalnym zakresie, a następnie wyrzucić.

Zgodnie z dokumentacją Apple dotyczącą typów Swift:

Typ krotki to rozdzielona przecinkami lista zawierająca zero lub więcej typów, umieszczona w nawiasach.

Są po prostu mieszanką innych różnych typów. Krotki mogą zawierać zero lub więcej rodzajów, zasadniczo o String, Integer, Boola także inne krotki. Należy również pamiętać, że krotki są przekazywane według wartości , a nie referencji.

let foo = (0, false, “Hello”)

let foo: (Int, Bool, String) = (0, false, “Hello”)

print(foo.0) // print: “0”
print(foo.1) // print: “false”
print(foo.2) // print: “Hello”

let bar: (Int, (Bool, String)) = (1, (false, “Hello”))
print(bar.0)   // print: “0”
print(bar.1.0) // print: “false”
print(bar.1.1) // print: “Hello”

Ale zamiast używać indeksów i pamiętać, która z nich odpowiada której wartości, najlepiej jest nazywać właściwości krotki, gdy tylko jest to możliwe.

let person = (age: 28, isTall: false, name: “Andyy”)
print(person.age)    // print: “28”
print(person.isTall) // print: “false”
print(person.name)   // print: “Andyy”

Najlepszym miejscem do użycia krotki byłoby użycie funkcji, która może zwracać wiele typów. Jeśli jesteś programistą Objective-C, ta koncepcja brzmi dziwacznie, a może nawet niemożliwe. Wcześniej musieliśmy przezwyciężyć ten problem, zwracając NSArrayalbo NSDictionary. Ale nawet ta rozdzielczość może być niebezpieczna. Bo co się stanie, jeśli spróbujemy typoszeregować niewłaściwy obiekt NSArrayi wywołamy na nim określoną funkcję? Może to spowodować awarię w czasie wykonywania.

Zamiast tego przyjrzyjmy się, w jaki sposób możemy sprawić, by funkcja zwracała wiele wartości, zamiast wymyślać hakerskie rozwiązania shortstop dla ograniczeń Objective-C:

typealias Person = (age: Int, isTall: Bool, name: String)
func getMultipleValues() -> Person {
let person: Person = (age: 28, isTall: false, name: “Andyy”)
return person
}
let andyy = getMultipleValues()
print(andyy.age)    // print: "28"
print(andyy.isTall) // print: "false"
print(andyy.name)   // print: "Andyy"

Ale jak widać powyżej, istnieje wywołanie funkcji, getMultipleValues() które zwraca krotkę trzech oddzielnych i różnych typów danych, z których każdy ma własną nazwę zmiennej.

Tworzenie instancji struktury (przestarzałe)

Aktualizacja: to będzie przestarzałe
Propozycja Swift 3.0 : SE-0029
Usuń niejawne zachowanie splat krotek z aplikacji funkcji

Na początku tego posta żartobliwie nazwałem krotki Struct Lite ™ . Mało znanym faktem jest to, że krotki mogą służyć do tworzenia instancji struktur.

let size = CGSize(width: 100, height: 100)

let arguments: (width: CGFloat, height: CGFloat) = (100, 100)
var size = CGSize(arguments)

let arguments: (height: CGFloat, width: CGFloat) = (100, 100)
❗️ var size = CGSize(arguments) 

Widzisz, co tam zrobiłem? Zmieniłem układ argumentów, zamieniając lokalizacje heighti width . Mimo że są oboje CGFloat, kompilator nie może wywnioskować, co próbujesz zrobić.

Interesujący fakt

Jeśli korzystałeś wcześniej ze Swift, są szanse, że faktycznie używałeś już krotek dla typów zwracanych, po prostu nawet o tym nie wiesz. Poniżej mamy trzy oddzielne funkcje, z których wszystkie robią dokładnie to samo (nic) i żadna z nich nie zwraca żadnej wartości.

func doNothingA() -> Void { }
func doNothingB() -> () { }
func doNothingC() { }

Fajne jest to, że Voidjest to po prostu typealiasfor (), a właściwie to po prostu pusta krotka. Bo jeśli pamiętacie na początku tego wpisu, wspomniałem, że krotki mogą zawierać zero lub więcej typów.

Umysł. Nadęty. Nie ma za co.

Wybierz swoją wymowę

Istnieje duże zamieszanie, jeśli chodzi o to, jak ludzie wymawiają słowo „krotka”. Niektórzy lubią mówić „Dwa pociągnięcia”, inni „Tup-pl”, a najbardziej szaleni mówią „Choo-pl”. Bez względu na to, jakie masz preferencje, bądź przygotowany na to, by zostać wezwanym.

Przykładowy kod tego posta można znaleźć na GitHub. To tylko prosty plik Playgrounds, który pomoże Ci lepiej zrozumieć.

Jeśli podoba Ci się to, co dziś przeczytałeś, możesz sprawdzić inne moje artykuły lub chcesz się z nami skontaktować, wyślij mi tweeta lub śledź mnie na Twitterze , to naprawdę sprawia, że ​​mój dzień. Organizuję również konferencję Playgrounds w Melbourne w Australii i do zobaczenia na następnej imprezie.

Suggested posts

Wyszukiwanie informacji o nazwach domen

Fragment książki Small, Sharp Software Tools autorstwa Briana P. Hogana

Wyszukiwanie informacji o nazwach domen

Kiedy wysyłasz żądanie do facebook.com, Twój komputer wyszukuje nazwę domeny, aby przetłumaczyć tę nazwę domeny na adres IP, aby komputer mógł nawiązać to połączenie.

„Ta mała wyspa zmienia wszystko”

Jak zaprojektowaliśmy Lyft Live Activities, aby poprawić wrażenia z jazdy

„Ta mała wyspa zmienia wszystko”

Zmiana gry w przypadku wspólnych przejazdów Spośród wszystkich rzeczy, które robimy w Lyft, układanie choreografii między pasażerami a kierowcami jest jedną z najbardziej złożonych i konsekwentnych. Wykonanie tej choreografii zależy od tego, czy Lyft wykona wiele rzeczy dobrze, ale po prostu utrzymywanie prędkości jeźdźców jest niezbędne.

Related posts

Finansowanie usuwania dwutlenku węgla w RO24

Podział wniosków o środki Carbon180 na różne ścieżki

Finansowanie usuwania dwutlenku węgla w RO24

Autor: Alyson Lee, doradca zarządzający ds. spraw rządowych Coroczny proces przyznawania środków przez rząd federalny ma kluczowe znaczenie dla naszych wysiłków na rzecz sfinansowania usuwania dwutlenku węgla (CDR). Każdego roku Carbon180 przesyła prośby do różnych biur kongresowych, aby pomóc wskazać, gdzie będą płynąć dolary w przyszłym roku.

Rewolucja w miejscu pracy: najlepsi eksperci omawiają pracę hybrydową i zdalną

Rewolucja w miejscu pracy: najlepsi eksperci omawiają pracę hybrydową i zdalną

W dzisiejszym szybko zmieniającym się krajobrazie biznesowym koncepcja pracy hybrydowej i zdalnej nabrała bezprecedensowego rozpędu. Ponieważ firmy wciąż dostosowują się do zmieniających się potrzeb i oczekiwań swoich pracowników, eksperci z różnych dziedzin zebrali się, aby omówić korzyści, wyzwania i przyszłość tego transformacyjnego sposobu pracy.

Czy sztuka jest kiedykolwiek apolityczna?

Czy sztuka jest kiedykolwiek apolityczna?

Wczoraj zamknęliśmy drzwi tegorocznego Konkursu Piosenki Eurowizji błyskotliwym, chaotycznym wielkim finałem, w którym szwedzka piosenkarka Loreen zabrała do domu trofeum, stając się pierwszą kobietą, która wygrała dwa razy i przywracając koronę Szwecji 50 lat po tym, jak ABBA wygrała konkurs z „Waterloo”. Stali się jednym z największych zespołów w kanonie muzyki pop.

Prześladowania chrześcijan: przestępstwo z nienawiści, o którym nie mówimy

Zapomnij o islamofobii: Chrześcijanie (i Żydzi) są głównymi ofiarami przestępstw z nienawiści na tle religijnym.

Prześladowania chrześcijan: przestępstwo z nienawiści, o którym nie mówimy

Każdy racjonalnie myślący wie, że w kręgach politycznych i medialnych dominuje lewica, nawet skrajna lewica, co powoduje zachwianie równowagi w dyskursie politycznym. W dziedzinie religii ta nierównowaga jest wyraźnie widoczna: lewicowe gazety i sieci nie spieszą się z obroną wiary chrześcijańskiej.