Когда я реализую протокол Hashable. функция эквивалентного протокола должна быть определена вне класса следующим образом. Следующим образом.
func ==(lhs: Swap, rhs: Swap) -> Bool {
return (lhs.cookieA == rhs.cookieA && lhs.cookieB == rhs.cookieB) ||
(lhs.cookieB == rhs.cookieA && lhs.cookieA == rhs.cookieB)
}
class Swap: Printable,Hashable {
var cookieA: Cookie
var cookieB: Cookie
init(cookieA: Cookie, cookieB: Cookie) {
self.cookieA = cookieA
self.cookieB = cookieB
}
var hashValue: Int {
return cookieA.hashValue ^ cookieB.hashValue
}
var description: String {
return "swap \(cookieA) with \(cookieB)"
}
}
Это просто немного странно для меня. В приведенном выше примере функция func == должна принадлежать классу Swap. Итак, почему нам нужно объявлять func == вне класса??