Krotka to grupa różnych wartości reprezentowanych jako jedna. Według Apple typ krotki to rozdzielona przecinkami lista zawierająca zero lub więcej typów, ujęta w nawiasy . To miniaturowa wersja struktury.
Rozważmy przykład: imię, które mówi, że Jan kowalski może być zadeklarowane jako krotka ("John", "Smith"). Zawiera imię i nazwisko osoby. Dostęp do wartości wewnętrznych można uzyskać za pomocą .notacji kropkowej ( ), po której następuje indeks wartości:
var person = ("John", "Smith")
var firstName = person.0 // John
var lastName = person.1 // Smith
()jest pustą krotką - nie zawiera elementów. Reprezentuje również Voidtyp.
Krotki nie są zgodne z protokołem hashable. Dlatego nie można go używać jako kluczy słownikowych.
Możesz zadeklarować krotkę jak każdą inną zmienną lub stałą. Aby go zainicjować, będziesz potrzebować kolejnej krotki lub literału krotki. Literał krotki to lista wartości oddzielonych przecinkami w nawiasach. Możesz użyć notacji z kropką, aby zmienić wartości z krotki, jeśli jest zadeklarowana jako zmienna.
var point = (0, 0)
point.0 = 10
point.1 = 15
point // (10, 15)
var origin = (x: 0, y: 0)
var point = origin
point.x = 3
point.y = 5
print(origin) // (0, 0)
print(point) // (3, 5)
Możesz nazwać elementy z krotki i używać tych nazw, aby się do nich odwoływać. Nazwa elementu to identyfikator, po którym następuje dwukropek (:).
var person = (firstName: "John", lastName: "Smith")
var firstName = person.firstName // John
var lastName = person.lastName // Smith
Możesz użyć krotek, aby zainicjować więcej niż jedną zmienną w jednym wierszu:
var (a, b, c) = (1, 2, 3)
Możesz zwrócić wiele wartości z funkcji, jeśli jako typ wyniku ustawisz krotkę.
Zwróć uwagę, że krotki są przekazywane przez wartość , a nie odwołanie.
W powyższym kodzie, dla czytelności kodu, użyłem a typealiasdo wstępnego zdefiniowania struktury krotki.
for (key,value) in myDictionary {
println("My key is \(key) and it has a value of \(value)")
}
Uwaga : _oznacza „Nie obchodzi mnie ta wartość”
for (key,_) in myDictionary {
println("My key is \(key)")
}
let http404Error = (404, "Not Found")
// http404Error is of type (Int, String), and equals (404, "Not Found")
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// Prints "The status code is 404"
print("The status message is \(statusMessage)")
// Prints "The status message is Not Found"
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// Prints "The status code is 404"
print("The status code is \(http404Error.0)")
// Prints "The status code is 404"
print("The status message is \(http404Error.1)")
// Prints "The status message is Not Found"
let http200Status = (statusCode: 200, description: "OK")
pomieszamy to, tworząc krotkę, która zawiera inną krotkę.
let bar: (Int, (Bool, String)) = (1, (false, "Hello"))
print(bar.0) // print: “1”
print(bar.1.0) // print: “false”
print(bar.1.1) // print: “Hello”
var a = 5
var b = 4
(b, a) = (a, b)
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 wydaje się niemożliwa, chyba że używasz tablicy lub słownika. Wcześniej musieliśmy przezwyciężyć ten problem, zwracając NSArrayalbo NSDictionary.
Źródła: artykuł średni , W eheartswift .
Cieszyć się!!
Możesz śledzić mnie na Medium, aby znaleźć świeże artykuły. Połącz się także ze mną na LinkedIn .
Jeśli masz jakieś uwagi, pytania lub zalecenia, możesz je opublikować w sekcji komentarzy poniżej!
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.
: Cykl od uruchomienia aplikacji do zamknięcia: Użyteczność poprzez zarządzanie pamięcią lub danymi ⬆️ Zabezpieczenia mogą być przetwarzane Sytuacja UIApplication, AppDelegate: Definiuje funkcje, które obiekt AppDelegate odbiera komunikaty wysyłane z obiektu UIApplication i wykonuje każdy Nie działa: Stan, w którym aplikacja nie jest uruchomiona Nieaktywna: Stan, w którym aplikacja jest uruchomiona, ale nie są odbierane żadne zdarzeniaAktywny: stan, w którym aplikacja jest uruchomiona i wystąpiło zdarzenieTło: stan, w którym aplikacja działa w tle, ale kod jest wykonywanyWstrzymana: stan, w którym aplikacja znajduje się w w tle i bez uruchomionego kodu do delegowania funkcji w pliku AppDelegate.swift SceneDelegate Aby dobrze reagować na funkcję wielu scen obsługiwaną od systemu iOS 13 wzwyż AppDelegate / SceneDelegate AppDelegate 1.
Było już po północy, kiedy Hayden odwiózł Katie do jej akademika po wspólnym wieczorze. Miała wcześnie rano zajęcia i nie miała kolejnej zmiany ubrania po tym, jak spędziła z nim noc wcześniej.
Jest wspaniale złoty poranek na falistych wzgórzach zachodu, gdy pierwsze promienie słońca oświetlają oszronioną trawę na równinach. Stado spokojnego bydła rasy Angus, czarnego jak smoła i masywne, rysuje się na tle wschodu słońca, gdy zmierza utartym szlakiem do miejsca, które wszyscy dobrze znają; bar śniadaniowy.
W dzisiejszym połączonym świecie zagrożenie cyberatakami jest bardziej powszechne niż kiedykolwiek. Cyberprzestępcy i podmioty państwowe nieustannie starają się wykorzystywać luki w zabezpieczeniach i kraść cenne dane, stanowiąc poważne zagrożenie dla organizacji każdej wielkości.
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.