구조체를 사전의 키로 사용하려고합니다. 코드는 신속한 2에서 작동하지만 그림 링크 에서처럼 신속한 3에서는 작동하지 않습니다.스위프트 3 : Equatable 함수를 작성하는 방법
답변
은 스위프트 버전에 대해 아니에요. Swift 2에서도 오류가 발생합니다. 문제는 전역 함수 여야하므로 ==
함수 을 Struct의 외부로 정의해야한다는 것입니다.
감사합니다. 처음으로 Hashable, Equatable로 작업했습니다. 이제 멋지게 작동합니다. – selcuk
@selcuk : [this] (http://stackoverflow.com/help/someone-answers)를 읽어보십시오. –
Hashable 프로토콜을 준수하는 Swift 유형도 Equatable 프로토콜을 준수해야합니다. Hashable 프로토콜은 Equatable 프로토콜 (source)에서 상속되기 때문에. 그래서 그 오류 메시지가 나타납니다.
귀하가 정의한 두 속성을 비교할 수 있도록 global == 연산자를 재정의하므로 == 함수가 전역 적으로 선언되어야합니다. Swift 3에서는 struct 자체에 ==를 정의 할 수도 있지만 정적이어야합니다.
struct Attributes: Hashable {
var uid: Int
var size: Size
var mimeType: mimeType
var hashValue: Int {
return uid
}
static func ==(lhs: Attributes, rhs: Attributes) -> Bool {
return lhs.size == rhs.size && lhs.mimeType == rhs.mimeType
}
}
코드를 이미지가 아닌 텍스트로 추가하십시오. –
코드는 Swift 2에서도 작동하지 않습니다. 오류 메시지는 매우 명확합니다. ** 연산자는 전역 범위에서만 허용됩니다 ** – vadian
@appzYourLife는 다음에 수행 할 것입니다 – selcuk