2016-08-18 4 views
11

के बीच अंतर कहें कि अगर वे उदाहरणों में किसी भी मूल्य को स्टोर नहीं करते हैं तो enum या struct स्थिर हैं। क्या स्थैतिक enum और स्थिर संरचना के बीच कोई अंतर है?स्थिर enum और स्थिर संरचना

enum StaticEnum { 
    static var someStaticVar = 0 
    static func someStaticFunc() {} 
} 

struct StaticStruct { 
    static var someStaticVar = 0 
    static func someStaticFunc() {} 
} 
+1

संबंधित: http://stackoverflow.com/questions/38585344/swift-constants-struct-or-enum। –

उत्तर

9

मुख्य अंतर यह है कि आप किसी भी मामले के साथ एक enum निर्माण नहीं कर सकते हैं। इसलिए यदि आप कुछ स्थिर सदस्यों के लिए नामस्थान के रूप में सेवा करने के लिए कुछ ढूंढ रहे हैं, तो एक enum को प्राथमिकता दी जाती है क्योंकि आप गलती से एक उदाहरण नहीं बना सकते हैं।

let e = StaticEnum() // error: 'StaticEnum' cannot be constructed because it has no accessible initializers 
let s = StaticStruct() // Useless, but legal 
+0

बिल्कुल सही, धन्यवाद! –

+1

नाम अंतरण के तरीके के रूप में 'enum' का उपयोग करना अजीब लगता है। मैंने इसे पहले बहुत अस्पष्ट पाया। लेकिन मुझे यकीन नहीं है कि एक अलग 'नेमस्पेस' निर्माण होने के लायक है जो अनिवार्य रूप से एक केस-कम 'enum' – Alexander

+0

@AlexanderMomchliov की तरह कार्य करता है, मैं निश्चित रूप से सहमत हूं कि नामस्थान के रूप में मामला कम गणना का उपयोग करके थोड़ा अजीब लगता है, ऐसा लगता है एक इच्छित विशेषता से उपयोगी दुष्प्रभाव की तरह। यद्यपि यह दिया गया है कि कितनी बार 'केवल एक नामस्थान' की आवश्यकता है (मैं केवल stdlib में एक उदाहरण के बारे में सोच सकता हूं, ['मेमोरीलाउट '] (https://developer.apple.com/reference/swift/memorylayout), लेकिन यहां तक ​​कि जो एक सामान्य पैरामीटर का लाभ लेता है, इसलिए 'केवल नामस्थान' नहीं है), मैं 'नेमस्पेस' निर्माण की कमी को समझ सकता हूं। – Hamish

संबंधित मुद्दे