objective c - `फ़्लोट` मान वापस करने के लिए` टाइप किए गए एफआईएस एनएसएनएनआईएम` का उपयोग कैसे करें?




objective-c enums (2)

उद्देश्य-सी गैर-पूर्णांक मान मानों का समर्थन नहीं करता है। आपका एकमात्र विकल्प कोड प्रदान करना है जो मान मान को float मान में रूपांतरित कर देता है।

एक विकल्प एक सरल कार्य बनाना है जैसे कि:

float LINE_WIDTH_float(LINE_WIDTH width);

इसे उसी के रूप में रखें। Enum घोषणा के रूप में। फिर निम्नलिखित को कुछ उपयुक्त .m या .c फ़ाइल में जोड़ें:

float LINE_WIDTH_float(LINE_WIDTH width) {
    switch (width) {
        case LINE_WIDTH_Large:
            return 1.5f;
        case LINE_WIDTH_Medium:
            return 1.0f;
        case LINE_WIDTH_Small:
            return 0.5f;
        case LINE_WIDTH_Hairline:
            return 0.25f;
        default:
            return 0.0f;
    }
}

तो कहीं आपके पास एक मान मान है:

LINE_WIDTH someWidth = LINE_WIDTH_Medium;
float width = LINE_WIDTH_float(someWidth);

एक अन्य विकल्प float की एक सरणी को परिभाषित करना होगा।

एक ही। में, enum के रूप में जोड़ें:

extern float *LINE_WIDTH_float;

फिर कुछ उपयुक्त। या। सी में, आप जोड़ सकते हैं:

float *LINE_WIDTH_float = { 1.5, 1.0, 0.5, 0.25 };

उसके बाद आप ऐसा कर सकते हैं:

LINE_WIDTH someWidth = LINE_WIDTH_Medium;
float width = LINE_WIDTH_float[someWidth];

ध्यान दें कि यह पहला दृष्टिकोण से कम सुरक्षित है यह संभावना दुर्घटना होगा यदि आपका मान मान किसी मान्य मान मान के अलावा किसी अन्य चीज़ पर सेट है या यदि आप एक नया मान मान जोड़ते हैं लेकिन सरणी में मानों को अपडेट करना भूल जाते हैं।

कोड ( नीचे ) LINE_WIDTH को गणन के लिए एक typedef किया गया LINE_WIDTH घोषित किया गया है जहां बड़े, मध्यम, लघु और हेयरलाइन नाम int स्थिर हैं।

    typedef NS_ENUM(NSInteger, LINE_WIDTH)
    {
        LINE_WIDTH_Large,
        LINE_WIDTH_Medium,
        LINE_WIDTH_Small,
        LINE_WIDTH_Hairline    
    };

मैं बड़े (1.5), मध्यम (1.0), लघु (0.5) और हेयरलाइन (0.25) के float मूल्यों को वापस करने के लिए इन int मानों का उपयोग कैसे कर सकता हूं?

नोट: मेरे पहले पोस्ट का एक सरल संस्करण जिसने इस के बावजूद ऐसा नहीं किया और यह


स्विफ्ट में आप एनोम के लिए टाइप डबल का उपयोग कर सकते हैं

enum Constants: Double {
    case π = 3.14159
    case e = 2.71828
    case φ = 1.61803398874
    case λ = 1.30357
}

त्वरित रूप से ईमियम के व्यावहारिक उपयोग के बारे में अधिक जानने के लिए कृपया https://appventure.me/2015/10/17/advanced-practical-enum-examples/ का संदर्भ लें





typedef