2017-02-11 3 views
0

Ich hatte Schwierigkeiten in der Klasse, viel über Introspektion in Swift zu erfahren, daher habe ich keine Ideen zu diesem Thema. Ich habe derzeit mehrere Klassen, von denen ich Klone erstellen möchte. Derzeit muss ich für jede Klasse eine Menge zusätzlichen Code schreiben, um eine eindeutige Duplizierungsmethode zu erhalten.Generische Duplizierungsmethode

Gibt es einen Ratschlag, Generika und Introspektion zu verwenden, um eine generische Duplizierungsmethode zu schreiben, die ich einfach für alle Klassen verwenden kann, die ich klonen möchte?

Um weiter zu klären, this ist im Wesentlichen, was ich gerade mache - obwohl ich das NSCopying Protokoll nicht bewusst war und stattdessen mein eigenes machte. Ich hoffe, die Notwendigkeit zu vermeiden, alle Eigenschaften auf die neue Instanz zu übertragen und stattdessen mit Generics und Introspektion zu lösen.

+0

Jeder Code, den Sie uns zeigen könnten? – dfd

+0

Gerade bearbeitet, um einen Link zu einem Artikel aufzunehmen. Die Kopierfunktion in diesem Artikel ist fast genau das, was ich gerade in meinem Code mache, und ich hoffe, dass ich vermeiden kann, Vornamen, Nachnamen und Alter manuell in die neue Instanz eingeben zu müssen. – Mathieson

+0

Hier ist wieder der Link: https://www.hackingwithswift.com/example-code/system/how-to-copy-objects-in-swift-using-copy – Mathieson

Antwort

2

Sorry, aber das ist nicht möglich. Aber das klingt nach einem großen Anwendungsfall für Werttypen. Irgendwelche Chance Sie können sie struct s statt class es machen?

+1

Dies ist die richtige Antwort fast überall wo Klonen erforderlich ist . – Sulthan

+1

Es ist erwähnenswert, dass nur eine Art eine Struktur zu geben nicht immer die Typ Wert Semantik geben wird. Wenn die Struktur eine Klassentypeigenschaft enthält, ist Ihre Struktur im Wesentlichen immer noch ein Referenztyp und die Kopien sind flach. –

+0

@JackLawrence Das stimmt nicht. Eine Struktur hat immer eine Wertesemantik. Wenn Sie einen Referenztyp eingeben, erhalten Sie eine Kopie dieses Referenztyps. Das würden die meisten "Clone" -Implementierungen tun. Deshalb unterscheiden wir zwischen Kopieren und Tiefem Kopieren. – Sulthan

Verwandte Themen