私はJavaの後すぐに勉強し始めました。 Javaでは、オブジェクト識別子に基づいてデフォルト値hashCode
とequals
を持つため、任意のオブジェクトをHashSetのキーとして使用できます。スイフトで同じ行動を達成するには?Swift、オブジェクト参照に基づいてHashableプロトコルを実装する方法は?
9
A
答えて
21
構造体ではなくクラスで作業している場合は、ObjectIdentifier
構造体を使用できます。また、Equatable
(Hashable
が必要)に準拠するためには、クラスに==
を定義する必要があります。これは次のようになります:
1
answerにすべてのクレジットがあります。再利用のための基本クラスにそれを回した、誰かを助けるかもしれない! open
のような余分なものはすべて、再利用可能な基本フレームワークコンポーネントに入れることができます。
open class HashableClass {
public init() {}
}
// MARK: - <Hashable>
extension HashableClass: Hashable {
public var hashValue: Int {
return ObjectIdentifier(self).hashValue
}
}
// MARK: - <Equatable>
extension HashableClass: Equatable {}
public func ==(lhs: HashableClass, rhs: HashableClass) -> Bool {
return ObjectIdentifier(lhs) == ObjectIdentifier(rhs)
}
使用するには、ちょうどあなたのクラスとサブクラスHashableClass
を取り、その後、すべてがちょうど動作するはずです!
class MyClass: HashableClass {
}
関連する問題
- 1. Objective-C Protocol Madness - プロトコルに基づいてオブジェクトを返す方法?
- 2. Swiftプロトコルを実装する場所は?
- 3. ペインに基づいてカスタムJavaFXコントロールを実装する方法
- 4. 型宣言に基づくプロトコル実装の動作の違い
- 5. Pythonの数値に基づいて変数を参照する方法は?
- 6. Swift 4:プロトコルを関連タイプとして実装した汎用プロトコルの実装
- 7. フィルターに基づいてセルのアドレス/参照を取得する方法Googleシート?
- 8. ユーザーに基づいて取り消す参照トークンを見つける方法
- 9. インターフェイスを実装するアクティビティを参照する方法は?
- 10. Sequelize:関連キーワードに基づいて検索を実装する方法は?
- 11. 16ビットFTMカウンタに基づいて32ビットカウンタを実装する方法は?
- 12. Springのクライアントトークンに基づいてレート制限を実装する方法は?
- 13. ブール値に基づいてFirebaseを照会する方法は?
- 14. Swift:プロトコル(インターフェイス)の部分クラス実装を行う方法?
- 15. ビルドターゲットに基づいて参照パスを変更する
- 16. stackoverflowに似たポイントに基づいてロールシステムを実装する方法
- 17. Hashableプロトコルに準拠した汎用構造体の実装。エラー:ジェネリックタイプ 'strA'への参照には引数が必要です<...>エラー
- 18. タイプ 'AnyObject'はプロトコル 'Hashable'に準拠していません
- 19. Drupalノードフォーム - タクソノミーツリーに基づいて階層チェックボックスを実装する方法
- 20. 参照に基づいてクラスにベクトルを渡す
- 21. インポートクラスを回避してプロトコルを実装する方法は?
- 22. Follow/Followerに基づいて友達を作る方法、Swift Firebase
- 23. TFSブランチに基づいてWorkItemを照会する方法
- 24. ジェネリックスがインターフェイスに基づいているインターフェイスを実装する
- 25. SwiftクラスでのObjective-Cプロトコルの実装
- 26. 外部キーに基づく相互参照の方法Django
- 27. Objective-Cでプロトコルを参照する方法は?
- 28. Hashableプロトコルに準拠していますか?
- 29. トライ実装、オブジェクト参照のpythonでのトライの次の実装を見て
- 30. cakephpで自己参照(parent_id)モデルを実装する方法
これはあなたが探しているものですか?http://stackoverflow.com/questions/30345700/reference-as-key-in-swift-dictionary? –