2016-07-11 4 views
0

프로토콜 Hashable을 준수하는 일반 구조체를 구현하려고합니다.Hashable 프로토콜을 준수하는 일반 구조체 구현. 오류 : 제네릭 유형 'strA'에 대한 참조가 필요합니다. <...> 오류

struct strA<T: Equatable>:Hashable, CustomStringConvertible { 
private(set) var key: String 
private(set) var value: T 
private(set) var timeStamp: NSDate 

init(leafKey key:String, leafValue value:T){ 
    self.key = key 
    self.value = value 
    self.timeStamp = NSDate() 
} 

var description: String { 
    return "\(self.key): \(self.value)" 
} 

var hashValue: Int { 
    return self.key.hashValue 
} 
} 

func == (lhs: strA, rhs: strA) -> Bool { 
    return lhs.key == rhs.key 
} 

평등 방법의 구현시 컴파일 오류가 발생합니다. enter image description here

나는 그것을 배열 내에서 이동하기 때문에 구조체 프로토콜 해쉬을 준수하게해야하고, 값이 Equatable 유형 중 하나 일 수 있기 때문에 그것의 일반적인. (거의 모든 것을 취할 것이기 때문에 여기에서 'Any'를 사용하지 않습니다.)

어떻게이 문제를 해결할 수 있습니까? 아니면이를 해결할 다른 방법이 있습니까?

p.s. 이것은 중복 질문이 아닙니다.

답변

2

strA은 제네릭이므로 같음 메서드는 generic이어야합니다.

func ==<T>(lhs: strA<T>, rhs: strA<T>) -> Bool { 
    return lhs.key == rhs.key 
} 

-

사이드 참고 : 모든 종류의 대문자로 시작해야한다. 따라서 StrAstrA이 아닙니다.

+0

예. 그냥 질문에 대한 무작위로 구조체를 retyped. 그리고 네. 이 작동합니다. –

관련 문제