2016-08-30 3 views
2

=====と定義して、参照型を作成したくなることがよくあります。参照型の同一性をIDとして定義しますか?

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

で:これは私は詳細を置き換えるために、多くの一例を引用して、ことができます

collection.contains(object) 

が、私は私が間違っ™何かをやっているしつこい感じています。平等を正体と定義することの短所は何ですか?これは共通のパターンですか?

答えて

1

アイデンティティとしての等価の定義は、オブジェクトの2つの異なる表現が不可能な場合にのみ有効です。さもなければ、あなたは同じに見えるが、同等のために比較されると失敗するオブジェクトに終わるだろう。

オブジェクトのキャッシュを保持して、同一のエンティティが1つのオブジェクトで表されることを確認しても問題ありません。

ルール "1つのエンティティ - 1つのオブジェクト"が壊れている場合、ハッシュセット、ハッシュマップ、および線形検索など、等価が使用されるすべての状況でオブジェクトは無用になります。

関連する問題