ध्यान दें कि मैंने यह post पढ़ा है लेकिन वह पोस्ट एक स्विच स्टेटमेंट का उपयोग करती है और पैटर्न मिलान होने पर इसे कुछ करना (सत्य वापस करना) माना जाता है। दूसरी तरफ, यदि पैटर्न मिलान करता है और if-case कथन का उपयोग करता है, तो मैं कुछ भी नहीं करना चाहता हूं।कैसे जांचें कि enum पैटर्न से मेल नहीं खाता है?
enum MyEnum {
case a
case b(Int)
case c
case d
}
यहाँ यह का एक उदाहरण है::
let myEnum: MyEnum = .a
अब मैं कुछ करने के लिए करता है, तो myEnum
.b
नहीं है चाहता हूँ
मैं इस enum है। चूंकि .b
एक संबद्ध महत्व है, मैं बस एक अगर बयान की जांच का उपयोग नहीं कर सकते हैं:
if case .b(_) = myEnum {
} else {
// do my thing here
}
लेकिन मैं सच में नफरत:
if myEnum != .b { // compiler error
// do my thing here
}
तो मैं पैटर्न मैच इसे करने के लिए एक है, तो दर-मामला बयान का उपयोग करना चाहिए खंड अगर खाली का उपयोग करें। यह सिर्फ मेरे लिए बेकार दिखता है। मैंने यह करने की कोशिश की:
if case .b(_) != myEnum { // compiler error!
// do my thing here
}
क्या खंड के खाली होने के अलावा इसे करने का कोई बेहतर तरीका है?
मेरे पास अभी भी कोड है जो पैटर्न के मिलान के बावजूद चलाना चाहिए, इसलिए guard
कथन काम नहीं करेगा।
क्षमा करें, लेकिन मुझे एहसास हुआ कि मैंने पर्याप्त संदर्भ प्रदान नहीं किया है। मेरा कोड उसके बाद वापस नहीं आ सकता है। कुछ कोड हैं जिन्हें निष्पादित करने की आवश्यकता है कि पैटर्न मिलान करता है या नहीं। फिर भी, आप एक उत्थान के लायक हैं! – Sweeper
@ स्वीपर हाँ, मैंने जवाब पोस्ट करने के बाद सोचा, इसलिए मैंने इस बारे में एक नोट जोड़ा :) – Cristik
क्यों फ़ंक्शन या गणना की गई संपत्ति का उपयोग न करें जो enum (स्विच) की स्थिति लौटाता है। – Dasem