Tupeltypen sind für Objective-C-Entwickler ein Fremdwort und können manchmal für a structoder verwechselt werden class. Tatsächlich sind sie jedoch viel grundlegender als beide. Ich stelle sie mir gerne als Miniaturstruktur oder Struct Lite ™ vor , die in einem minimalen Umfang verwendet und dann verworfen werden sollten.
Laut Apple-Dokumentation zu Swift-Typen:
Ein Tupeltyp ist eine durch Kommas getrennte Liste von null oder mehr Typen, die in Klammern eingeschlossen sind.
Sie sind nur eine Verbindung anderer verschiedener Typen. Tupeln kann null oder mehr Arten enthalten, in der Regel von einem String, Integer, Boolsowie andere Tupel. Bitte beachten Sie auch, dass Tupel als Wert und nicht als Referenz übergeben werden.
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”
Anstatt Indizes zu verwenden und sich merken zu müssen, welcher Wert welchem Wert entspricht, empfiehlt es sich, die Eigenschaften Ihres Tupels nach Möglichkeit zu benennen.
let person = (age: 28, isTall: false, name: “Andyy”)
print(person.age) // print: “28”
print(person.isTall) // print: “false”
print(person.name) // print: “Andyy”
Der beste Ort, um ein Tupel zu verwenden, ist, wenn Sie eine Funktion wünschen, die mehrere Typen zurückgeben kann. Wenn Sie ein Objective-C-Entwickler sind, klingt dieses Konzept ausgefallen und vielleicht sogar unmöglich. Bisher mussten wir dieses Problem durch Rückgabe eines NSArrayoder überwinden NSDictionary. Aber selbst diese Lösung kann gefährlich sein. Denn was ist, wenn wir versuchen, das falsche Objekt von zu typisieren NSArrayund eine bestimmte Funktion darauf aufzurufen? Dies könnte zur Laufzeit zu einem Absturz führen.
Schauen wir uns stattdessen an, wie eine Funktion mehrere Werte zurückgeben kann, anstatt Shortstop-Hacky-Lösungen für die Einschränkungen von Objective-C zu entwickeln:
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"
Wie Sie oben sehen können, gibt es einen Funktionsaufruf, getMultipleValues() der ein Tupel von drei separaten und unterschiedlichen Datentypen mit jeweils einem eigenen Variablennamen zurückgibt.
Update: Dies wird veraltet sein. Swift 3.0
Vorschlag: SE-0029
Implizites Tupel-Splat-Verhalten aus Funktionsanwendungen entfernen
Zu Beginn dieses Beitrags habe ich Tupel scherzhaft als Struct Lite ™ bezeichnet . Eine wenig bekannte Tatsache ist, dass Tupel verwendet werden können, um Strukturen zu instanziieren.
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)
Sehen Sie, was ich dort gemacht habe? Ich habe die Anordnung der Argumente geändert, indem ich die heightund width Positionen ausgetauscht habe . Obwohl beide vorhanden sind CGFloat, kann der Compiler nicht ableiten, was Sie tun möchten.
Wenn Sie Swift bereits verwendet haben, besteht die Möglichkeit, dass Sie bereits Tupel für Rückgabetypen verwendet haben. Sie wissen es einfach nicht einmal. Im Folgenden haben wir drei separate Funktionen, die alle genau dasselbe tun (nichts) und von denen keine einen Wert zurückgibt.
func doNothingA() -> Void { }
func doNothingB() -> () { }
func doNothingC() { }
Das Coole ist, Voidist nur ein typealiasfür (), was eigentlich nur ein leeres Tupel ist. Denn wenn Sie sich am Anfang dieses Beitrags erinnern, habe ich erwähnt, dass Tupel null oder mehr Typen enthalten können.
Verstand. Geblasen. Bitte.
Es gibt große Verwirrung darüber, wie Leute das Wort "Tupel" aussprechen. Einige sagen gerne "Two-Pull", während andere "Tup-Pl" sagen, und die verrücktesten sagen "Choo-Pl". Was auch immer Sie bevorzugen, seien Sie darauf vorbereitet, darauf hingewiesen zu werden.
Beispielcode für diesen Beitrag finden Sie auf GitHub. Es ist nur eine einfache Playgrounds-Datei, die Ihnen hilft, ein bisschen besser zu verstehen.
Wenn Ihnen das, was Sie heute gelesen haben , gefällt, können Sie unsere anderen Artikel lesen oder Kontakt aufnehmen. Bitte senden Sie mir einen Tweet oder folgen Sie mir auf Twitter . Es ist wirklich mein Tag. Ich organisiere auch die Playgrounds Conference in Melbourne, Australien und würde Sie bei der nächsten Veranstaltung sehen.
Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.
Ein Game-Changer für Mitfahrgelegenheiten Von all den Dingen, die wir bei Lyft tun, ist die Choreografie von Abholungen zwischen Fahrgästen und Fahrern eine der komplexesten und folgenreichsten. Um diese Choreografie auf den Punkt zu bringen, muss Lyft viele Dinge gut machen, aber es ist wichtig, die Fahrer einfach auf dem Laufenden zu halten.
„Hey Siri, spiel Me Dive von Olivia Dean.“ Es war Mai 2021, als ich mein Praktikum bei der Future Academy Africa in Akure, Nigeria, begann.
Wenn man erwachsen wird, wird einem oft gesagt, dass die Welt so ist, wie sie ist, und dass das Leben nur darin besteht, sein Leben in der Welt zu leben, niemals sein Leben zu riskieren, einfach einem festgelegten Weg zu folgen und am Ende zu sterben, und versucht, es nicht zu tun Schlage zu viel gegen die Wände. Aber das ist ein sehr begrenztes Leben.
Einleitung: Willkommen, mutige Leser, zu einer Reise, die uns in die dunkelsten Tiefen unseres Planeten führt. In diesem Blog tauchen wir in die rätselhafte Welt des Marianengrabens ein, decken seine verborgenen Geheimnisse auf und decken die gruseligen Wahrheiten auf, die unter seiner Oberfläche liegen.
Es war nach Mitternacht, als Hayden Katie nach ihrem gemeinsamen Abend zurück in ihren Studentenwohnheim fuhr. Sie hatte morgens einen frühen Unterricht und hatte keine Kleidung mehr zum Wechseln, nachdem sie die Nacht zuvor bei ihm übernachtet hatte.