Kann ich Tupel in Swift verlängern?

8

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:

%Vor%

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?

    
Jean-Philippe Pellet 04.02.2015, 09:18
quelle

2 Antworten

21

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 .

    
Martin R 04.02.2015, 09:55
quelle
5

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.

%Vor%

Als Nebenbemerkung in Swift 2.2 sind nun Tupel mit bis zu 6 Mitgliedern Equatable .

    
M. Mayer 20.06.2016 13:46
quelle