Ich möchte eine Erweiterung für Tupel von (z. B. zwei) Werten in Swift schreiben. Zum Beispiel möchte ich diese Methode swap
schreiben:
so dass s
vom Typ (String, Int)
mit Wert ("one", 1)
wäre. (Ich weiß, dass ich sehr einfach eine Funktion swap(t)
implementieren kann, aber das interessiert mich nicht.)
Kann ich das tun? Ich kann nicht scheinen, den korrekten Typnamen in der Deklaration extension
zu schreiben.
Zusätzlich, und ich nehme an, die Antwort ist die gleiche, kann ich ein 2-Tupel ein gegebenes Protokoll annehmen lassen?
Sie können die Tupeltypen in Swift nicht erweitern. Gemäß Typen , es gibt benannte Typen ( welche kann erweitert werden) und zusammengesetzte Typen . Tupel und Funktionen sind zusammengesetzt Typen.
Siehe auch (Hervorhebung hinzugefügt):
Erweiterungen
Erweiterungen fügen einer vorhandenen Funktionalität neue Funktionen hinzu Klasse, Struktur oder Aufzählungstyp .
Wie die obige Antwort besagt, können Tupel in Swift nicht erweitert werden. Aber anstatt Ihnen nur ein Nein zu geben, können Sie das Tupel in ein class
, struct
oder enum
einbetten und dieses erweitern.
Als Nebenbemerkung in Swift 2.2 sind nun Tupel mit bis zu 6 Mitgliedern Equatable
.
Tags und Links swift tuples swift-protocols swift-extensions