I는 다음과 같습니다 스위프트의 구조체가 : 지금에 맞도록 MapKey을 필요로하는 스위프트 사전의 핵심으로 MapKey을 사용할 필요가스위프트 : 사전 속성 해쉬 구조체
internal struct MapKey {
internal let id: String
internal let values: [String:String]
}
extension MapKey: Equatable {}
func ==(lhs: MapKey, rhs: MapKey) -> Bool {
return lhs.id == rhs.id && lhs.values == rhs.values
}
을 Hashable 프로토콜.
Hashable의 올바른 구현은이 구조체에 대해 무엇이 될까요?
extension MapKey: Hashable {
var hashValue: Int {
return ??? // values does not have a hash function/property.
}
}
나는 몇 가지 연구를하고 있지만 나는
값 특성 자체에 대한 해시 값을 생성 할 수 있어야로, 사전을 해시하는 적절한 방법이 무엇인지 파악하는 데 실패했습니다. 어떤 도움이라도 대단히 감사합니다.
해시가 고유 할 필요가 없으므로 세미콜론에 대한 어떠한 가정도하지 않아도됩니다 (이러한 구분 기호를 삽입 할 필요가 없습니다). –
@MartinR과 동의합니다. 아이디어 코드를 보내 주셔서 감사합니다. 현재의 요구 사항을 해결하고, 데이터 모델을 검토하는 데 도움을 주시면 감사하겠습니다. – unbekant
내가 틀렸다면 나를 바로 잡습니다. 이 대답을 읽고 (http://stackoverflow.com/a/31666711/5175709) 나는 ** 당신이 ** 별도로 Equatable을 구현해야한다고 생각한다. * – Honey