मैं दो स्विफ्ट एनम मूल्यों की समानता का परीक्षण करना चाहता हूं। उदाहरण के लिए:
enum SimpleToken {
case Name(String)
case Number(Int)
}
let t1 = SimpleToken.Number(123)
let t2 = SimpleToken.Number(123)
XCTAssert(t1 == t2)
हालाँकि, संकलक समानता अभिव्यक्ति संकलित नहीं करेगा:
error: could not find an overload for '==' that accepts the supplied arguments
XCTAssert(t1 == t2)
^~~~~~~~~~~~~~~~~~~
क्या मैंने समानता ऑपरेटर के अपने स्वयं के अधिभार को परिभाषित किया है? मैं उम्मीद कर रहा था कि स्विफ्ट कंपाइलर इसे अपने आप हैंडल कर लेगा, जैसे स्काला और ओक्लेमल करते हैं।
Equatable
और Hashable
संबंधित मूल्यों के साथ एनमों के लिए भी समर्थन करता है ।