Swift: Chose a random enumeration value -


मैं अनियमित रूप से एक enum मान चुना है, यह मेरा वर्तमान प्रयास है:

  enum geometryClassification {केस सर्कल केस स्क्वायर केस त्रिकोण का मामला ज्यामिति क्लासिफिकेशन मैक्स}   

और यादृच्छिक चयन:

  आकृति दें geometry = (arc4random ()% GeometryClassification.GemometryClassificationMax) जैसा कि ज्यामिति क्लासिफिकेशन   

यह बुरी तरह विफल रहता है।

मुझे ऐसी त्रुटियां मिलती हैं:

  'ज्यामिति क्लासिफिकेशन' को 'UInt32'   

यह कैसे हल करने के बारे में कोई भी विचार है?

आपके आखिरी मामले के बारे में मैं पागल नहीं हूं - ऐसा लगता है जैसे आप । GeometryClassificationMax केवल यादृच्छिक चयन को सक्षम करने के लिए शामिल कर रहे हैं। आपको उस अतिरिक्त मामले के लिए खाते की आवश्यकता होगी जहां आप स्विच कथन का उपयोग करते हैं, और इसमें कोई अर्थ मूल्य नहीं है इसके बजाय, enum पर एक स्थिर विधि अधिकतम मूल्य निर्धारित कर सकता है और एक यादृच्छिक मामला वापस कर सकता है, और अधिक समझने योग्य और रखरखाव होगा।

  enum geometryClassification: UInt32 { मामले सर्किल मामले स्क्वायर मामले त्रिकोण निजी स्थिर चलाना _count: geometryClassification.RawValue = {// अधिकतम enum मान var maxValue: UInt32 = 0 जबकि जाने _ = ज्यामिति क्लासिफिकेशन (rawValue: maxValue) {maxValue + = 1} वापसी maxValue} () स्थैतिक आनन्द यादृच्छिक जीमेट्री () - & gt; जियोमेट्री क्लासिफिकेशन {/ / एक नया मान चुनना और वापसी करना रैंड = arc4random_uniform (_count) रिटर्न ज्यामिति क्लासिफिकेशन (कच्चे वाल्व: रैंड)! }}   

और अब आप enum में एक स्विच कथन में निकास कर सकते हैं:

  स्विच प्रिंटलाइन ("स्क्वायर") केस। प्रिंट: ("स्क्वायर") केस। त्रिभुज: println ("त्रिभुज")}     / html>

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

php - How can I cram 6+31 numeric characters into 22 alphanumeric characters? -

mysql - where clause in inner join query -