2016-08-30 1 views
2

Ich bin oft versucht, meine Referenztypen Equatable durch Definition == als === zu machen. Dies ermöglicht es mir, ein Beispiel von vielen zu nennen, die ausführlichen zu ersetzen:Gleichheit als Identität für Referenztypen definieren?

collection.contains(where: { $0 === object }) 

mit:

collection.contains(object) 

aber ich habe eine nagende Gefühl, dass ich etwas falsch ™ mache. Was sind die Schattenseiten bei der Definition von Gleichheit als Identität? Ist das ein allgemeines Muster?

Antwort

1

Die Definition von Gleichheit als Identität ist nur in Situationen sinnvoll, in denen zwei verschiedene Darstellungen eines Objekts unmöglich sind. Andernfalls würden Sie Objekte erhalten, die identisch aussehen, aber im Vergleich zur Gleichheit fehlschlagen.

Dies ist OK, wenn Sie einen Cache von Objekten behalten und sicherstellen, dass identische Objekte mit einem einzelnen Objekt dargestellt werden.

Wenn die Regel "Eine Entität - Ein Objekt" unterbrochen ist, werden Ihre Objekte in allen Situationen unbrauchbar, wenn Gleichheit verwendet wird, z. B. Hash-Sätze, Hash-Maps und lineare Suchen.

Verwandte Themen