heterogeneous

___ tag123arrays ___ Ein Array ist eine geordnete Datenstruktur, die aus einer Sammlung von Elementen (Werten oder Variablen) besteht, die jeweils durch einen oder mehrere Indizes identifiziert werden. Wenn Sie nach bestimmten Varianten von Arrays fragen, verwenden Sie stattdessen diese verwandten Tags: [Vektor], [Arraylist], [Matrix]. Wenn Sie dieses Tag verwenden, markieren Sie die Frage auch mit der verwendeten Programmiersprache, es sei denn, Ihre Frage bezieht sich nicht auf eine bestimmte Programmiersprache. ___ qstnhdr ___ Wie vergleicht man zwei Arrays von Protokollen für Gleichheit in Swift? ___ tag123protocols ___ Ein gebräuchliches Mittel für (un) verwandte Objekte, miteinander zu kommunizieren. ___ qstntxt ___

Ich bin in eine Situation geraten, von der ich sicher bin, dass sie nicht ungewöhnlich ist. Ich habe zwei Arrays von Objekten, die einem Protokoll entsprechen, und ich möchte überprüfen, ob sie gleich sind.

Was ich wirklich gerne machen würde ist:

%Vor%

Dies führt jedoch zum Kompilierungsfehler:

%code%

Gestützt auf diesen Beitrag erkenne ich, dass ich die Equatable-Vererbung auf meinem Protokoll verlieren und schieben muss es auf die konkreten 'Pattern'-Deklarationen. Obwohl ich wirklich nicht verstehe warum. Wenn ich definiere, wie die zwei Objekte basierend auf dem Protokoll gleich sind, durch Überladen ==, gibt es wirklich kein Problem, soweit ich sehen kann. Ich muss nicht einmal die tatsächlichen Typen kennen oder ob sie Klassen oder Strukturen sind.

Unabhängig davon, das ist alles gut und gut und ich kann jetzt %code% vergleichen, aber das Problem bleibt, dass ich Arrays dieser Objekte nicht mehr vergleichen kann, wie ich ein Array eines konkreten Typs vergleichen kann, da die Array-Gleichheit darauf basiert, das zu überladen == operator.

Das Beste, was ich bisher geschafft habe, ist eine %code% -Methode auf %code% über eine Erweiterung zu glomben. Dies erlaubt mir zumindest Arrays zu vergleichen. Aber ehrlich gesagt, dieser Code stinkt.

%Vor%

Gibt es wirklich keine andere Möglichkeit, dies zu tun? Bitte sag mir, dass mir etwas offensichtlich fehlt.

    
___ tag123swift ___ Swift ist eine universelle Open-Source-Programmiersprache, die von Apple Inc. für ihre Plattformen und Linux entwickelt wurde. Verwenden Sie das Tag nur für Fragen zu Sprachfunktionen oder für Code in Swift. Verwenden Sie die Tags [ios], [osx], [watch-os], [tvos], [cocoa-touch] und [cocoa] für (sprachunabhängige) Fragen zu den Plattformen oder Frameworks. ___ tag123swift2 ___ Verwenden Sie dieses Tag nur für Fragen, die sich direkt auf Änderungen in Version 2.x der Apple Swift-Programmiersprache beziehen. Verwenden Sie das Tag [swift] für allgemeinere Sprachfragen oder die Tags [ios], [cocoa], [apple-watch] usw. für Fragen zur Entwicklung auf Apple-Plattformen. ___ tag123heterogenous ___ Dieses Tag ist nicht eindeutig. Bitte verwenden Sie andere, spezifischere Tags, um den Umfang Ihrer Frage einzugrenzen. ___ answer33152418 ___
  

Ich habe zwei Arrays von Objekten, die einem Protokoll entsprechen, und ich möchte prüfen, ob sie gleich sind.

Sie wollen also sagen, dass die beiden Arrays gleich sind, wenn alle Elemente in ihnen gleich sind und die Elemente alle dem Muster entsprechen. d. h.

Wenn a, b, c und d alles sind, was mit Pattern übereinstimmt, wollen Sie

%Vor%

Der einfachste Weg, dies zu tun, besteht darin, einen Gleichheitsoperator für zwei Musterfelder zu definieren, d. h.

%Vor%

Ich habe zwei Typen definiert, die mit Pattern übereinstimmen und verschiedene Gleichheitsvergleiche ausprobiert haben, und alles funktioniert

%Vor%     
___ answer33147210 ___

Die Antwort Schnell :

%Vor%

Dies ist ein Muster (Wortspiel beabsichtigt), das ich selbst entwickelt habe, und es funktioniert sehr gut für Situationen wie diese. %code% ist ein automatisch implementiertes Protokoll mit der neuen Protokollerweiterungsfunktion und stellt eine vom Typ gelöschte Version von %code% dar.

    
___
2
Antworten

SVN: How-to ignorieren und worauf?

Es scheint mir, dass das Hinzufügen der Eigenschaft svn: ignore auf Dateien wie .classpath eine gute Idee wäre. Ich benutze sowohl Windows (work, ugh) als auch Linux Entwicklungsumgebungen und überschreibe jedes Mal, wenn ich mit dem Repository...
17.03.2011, 19:34
2
Antworten

Wie vergleicht man zwei Arrays von Protokollen für Gleichheit in Swift?

Ich bin in eine Situation geraten, von der ich sicher bin, dass sie nicht ungewöhnlich ist. Ich habe zwei Arrays von Objekten, die einem Protokoll entsprechen, und ich möchte überprüfen, ob sie gleich sind. Was ich wirklich gerne machen würde...
15.10.2015, 11:15
4
Antworten

Was wäre der sicherste Weg, Objekte von Klassen zu speichern, die von einer gemeinsamen Schnittstelle in einem gemeinsamen Container stammen?

Ich möchte eine Reihe von Objekten von Klassen verwalten, die von einer gemeinsam genutzten Schnittstellenklasse in einem gemeinsamen Container abgeleitet sind. Um das Problem zu veranschaulichen, lasst uns sagen, ich baue ein Spiel, das vers...
22.03.2010, 01:24