स्विफ्ट के निकास स्विच विवरण के लिए नोओप


88

स्विफ्ट को संपूर्ण स्विच स्टेटमेंट की आवश्यकता होती है, और यह कि प्रत्येक मामले में निष्पादन योग्य कोड होता है।

'केस' लेबल 'स्विच' में कम से कम एक निष्पादन योग्य विवरण होना चाहिए

क्या किसी ने उन मामलों को संभालने के लिए एक अच्छा तरीका तय किया है जहां आप वास्तव में कुछ भी नहीं करना चाहते हैं? मैं वहां एक प्रिंटल () रख सकता हूं, लेकिन यह गंदा लगता है।


जवाबों:


150

पुस्तक के अनुसार , आपको breakवहां उपयोग करने की आवश्यकता है :

प्रत्येक मामले का दायरा खाली नहीं हो सकता। नतीजतन, आपको कोलन (प्रत्येक केस लेबल का :) के बाद कम से कम एक कथन शामिल करना चाहिए। breakयदि आप एक मैच्योर केस के किसी भी कोड को निष्पादित करने का इरादा नहीं रखते हैं, तो एक ही कथन का उपयोग करें ।


8
ओह, फिर से स्विफ्ट न्यूनतम आश्चर्य का कानून तोड़ता है :)
सुल्तान

10
@ जियारो के breakसंकेत की आवश्यकता है कि शाखाओं के बिना breakगिरावट हो सकती है।
RnMss

4
एक साधारण ()वोकर्स भी। फिर भी मैं पसंद breakकरता हूं क्योंकि यह चीजों को और अधिक स्पष्ट करता है। fallthrougस्टेटमेंट के माध्यम से गिरने के लिए कीवर्ड का उपयोग करें ।
cLar

1
यह काफी कष्टप्रद है जब आप संक्षेप में केवल उस लाइन के बारे में टिप्पणी करना चाहते हैं जो इस default:मामले में है। यह एक अच्छी बात नहीं लगती है। मैं यह भी मानता हूं कि यह व्यवहार के माध्यम से सी के गिरने का सुझाव है, जो कि स्विफ्ट नहीं करता है (यह जानने के लिए अच्छा है कि यह हालांकि के माध्यम से गिर सकता है)।
बेंजोना

1
और मुझे यह सुनिश्चित करने के लिए यहां आना पड़ा कि ब्रेक जल्द ही एक
संलग्नक

12

आप एक breakबयान का उपयोग कर सकते हैं :

let vegetable = "red pepper"
var vegetableComment: String = "Nothing"
switch vegetable {
case "cucumber", "watercress":
    break // does nothing
case let x where x.hasSuffix("pepper"):
    vegetableComment = "Is it a spicy \(x)?"
default:
    vegetableComment = "Everything tastes good in soup."
}

उदाहरण डॉक्स से संशोधित


3

नीचे अशक्त कथन के लिए एक विकल्प है, लेकिन शायद एक अच्छा समाधान नहीं है। मुझे अजगर पास जैसा बयान नहीं मिल रहा है

{}() 

स्विच मामले के लिए, ब्रेक बेहतर विकल्प है।

break

0

मेरे द्वारा पाया गया सबसे साफ समाधान स्विच केस में बस आपके अंतिम कथन को आपके डिफ़ॉल्ट के रूप में शामिल करना है। यह breakसभी संभावित मामलों को कवर करते समय या अन्य अनावश्यक बयानों को जोड़ने की आवश्यकता से बचाता है ।

उदाहरण के लिए:

switch myVar {

case 0:
    myOtherVar = "Red"

case 1:
    myOtherVar = "Blue"

default:
    myOtherVar = "Green"

}

1
हाय @scottyhardy यह वास्तव में सवाल का बिंदु नहीं है। आपने प्रश्न का उत्तर लिखा: "कैसे एक खाली डिफ़ॉल्ट मामले को जोड़ने से बचें" (या उन पंक्तियों के साथ कुछ)। आपके मामले में आप वास्तव में सभी मामलों में कुछ कर रहे हैं। लेकिन मान लें कि आपके पास एक मामला है (उदाहरण के लिए नंबर 2 की तरह) जहां आप कुछ भी नहीं करना चाहते हैं, तो उस स्थिति में आप उसी प्रश्न पर वापस आते हैं: क्या करना है जब एक स्विच मामले में हम नहीं चाहते हैं कुछ भी करना? लंबी कहानी छोटी: ब्रेक का उपयोग करें।
एनरिकोज़ा

0

breakअन्य उत्तरों में उल्लिखित के अलावा , मैंने इसका ()उपयोग नो-ऑप स्टेटमेंट के रूप में भी देखा है:

switch 0 == 1 {
case true:
    break
case false:
    ()
}

()यदि आप breakभ्रमित पाते हैं या 3 वर्णों को सहेजना चाहते हैं, तो उपयोग करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.