मुझे परिभाषा के क्रम में स्विफ्ट में enums की तुलना करने के तरीके पर दस्तावेज़ीकरण खोजने/समझने में परेशानी हुई है। विशेष रूप से जब मैं एक गणन जैसेस्विफ्ट गणना आदेश और तुलना
enum EnumType {
case First, Second, Third
}
स्विफ्ट मुझसे सीधे आदेश से enums तुलना करने के लिए अनुमति नहीं है,
let type1 = EnumType.First
let type2 = EnumType.Second
if type1 < type2 {println("good")} // error
इस तरह के रूप में यह संकलन त्रुटि उत्पन्न बनाने के "तर्क सूची के साथ आह्वान नहीं कर सकता '<' {EnumType, EnumType} प्रकार के के। तो एकमात्र समाधान मैंने पाया भार के रूप में अपने खुद के तुलना ऑपरेटरों, इस तरह के
enum EnumType : Int {
case First = 0, Second, Third
}
func <(a: EnumType, b: EnumType) -> Bool {
return a.rawValue < b.rawValue
}
let type1 = EnumType.First
let type2 = EnumType.Second
if type1 < type2 {println("good")} // Returns "good"
के रूप में यह लिखने के लिए सब कुछ ठीक एक है "भारी वजन" enums के लिए अच्छा है जो मेरे आवेदन में बहुत अधिक उपयोग और मूल्य है, लेकिन उन सभी ऑपरेटरों को अधिभारित करना जिन्हें मैं उपयोग करना चाहूंगा, वे 'हल्के वजन' enums के लिए अत्यधिक बोझिल लगते हैं जिन्हें मैं कुछ लोगों को आदेश देने के लिए फ्लाई पर परिभाषित कर सकता हूं एक छोटे मॉड्यूल के लिए स्थिरांक।
क्या मेरे प्रोजेक्ट में परिभाषित प्रत्येक एनम प्रकार के लिए बॉयलरप्लेट अधिभार कोड लिखने के बिना ऐसा करने का कोई तरीका है? इससे भी बेहतर, क्या कुछ ऐसा है जो मुझे स्विफ्ट करने के लिए याद आ रही है, सरल एनम के लिए तुलनात्मक ऑपरेटरों को स्वचालित रूप से प्रदान करता है जिनमें संबंधित प्रकार नहीं हैं, यानी। जो इंटी के रूप में टाइप या टाइप किए गए हैं? स्विफ्ट जानता है कि इंट्स की तुलना कैसे करें, तो यह एनम इंट्स की तुलना क्यों नहीं कर सकता?
आप [इस जवाब] (http://stackoverflow.com/a/27094973/148357) में वर्णित 'हैशवैलू 'संपत्ति का उपयोग कर सकते हैं। पिछले बयान :) – Antonio