स्विफ्ट केस के माध्यम से गिर रहा है


146

क्या तेजी से बयान के माध्यम से गिर गया है? उदाहरण के लिए यदि मैं निम्न कार्य करता हूं

var testVar = "hello"
var result = 0

switch(testVal)
{
case "one":
    result = 1
case "two":
    result = 1
default:
    result = 3
}

क्या केस "एक" और केस "दो" के लिए एक ही कोड निष्पादित किया जाना संभव है?

जवाबों:


367

हाँ। आप इस प्रकार कर सकते हैं:

var testVal = "hello"
var result = 0

switch testVal {
case "one", "two":
    result = 1
default:
    result = 3
}

वैकल्पिक रूप से, आप fallthroughकीवर्ड का उपयोग कर सकते हैं :

var testVal = "hello"
var result = 0

switch testVal {
case "one":
    fallthrough
case "two":
    result = 1
default:
    result = 3
}

29
+1 केवल उल्लेख करने के लिए नहीं fallthrough, बल्कि
थिलो

3
सी के गिरने के खतरे के बीच यह एक अच्छा समझौता है, और उदाहरण के लिए, सी # के माध्यम से गिरावट की कमी
अलेक्जेंडर - मोनिका

क्या किसी को पता है कि कैसे एक मामले से डिफ़ॉल्ट रूप से गिरना है? मामला "दो", डिफ़ॉल्ट: संकलित नहीं होगा।
ज़ैक मॉरिस

2
कोई बात नहीं। मुझे एहसास हुआ कि इस मामले पर टिप्पणी करने से यह तयशुदा मामलों का हिस्सा बन जाता है, इसलिए: / * केस "दो", * / डिफ़ॉल्ट: का वह प्रभाव है जिसकी मुझे तलाश है।
ज़ैक मॉरिस

1
@AlexanderMomchliov C # के माध्यम से स्पष्ट रूप से गिरावट आई है
इयान न्यूज़न

8
var testVar = "hello"

switch(testVar) {

case "hello":

    println("hello match number 1")

    fallthrough

case "two":

    println("two in not hello however the above fallthrough automatically always picks the     case following whether there is a match or not! To me this is wrong")

default:

    println("Default")
}

क्या आप डिफ़ॉल्ट मामले के माध्यम से गिरने का एक तरीका जानते हैं?
मार्कजम्स २ames

5
मैं "केस टू" से सहमत हूं। मेरे लिए यह व्यवहार बेकार है। स्विफ्ट अगले मामले को निष्पादित क्यों करता है यहां तक ​​कि यह सच नहीं है? यह स्विच स्टेटमेंट को पूरी तरह से बेकार कर देता है ...
एंड्रियास उत्जिंगर ने

7
case "one", "two":
    result = 1

ब्रेक स्टेटमेंट नहीं हैं, लेकिन मामले बहुत अधिक लचीले हैं।

परिशिष्ट: जैसा कि एनालॉग फाइल बताती है, वास्तव breakमें स्विफ्ट में कथन हैं । वे अभी भी लूप में उपयोग के लिए उपलब्ध हैं, हालांकि switchबयानों में अनावश्यक है , जब तक कि आपको अन्यथा खाली मामले को भरने की आवश्यकता नहीं है, क्योंकि खाली मामलों की अनुमति नहीं है। उदाहरण के लिए default: break:।


6

आपके लिए यह समझना आसान है:

let value = 0

switch value
{
case 0:
    print(0) // print 0
    fallthrough
case 1:
    print(1) // print 1
case 2:
    print(2) // Doesn't print
default:
    print("default")
}

निष्कर्ष: fallthroughअगले मामले (केवल एक) को निष्पादित करने के लिए उपयोग करें जब पिछले वाले fallthroughका मिलान हो या न हो।


2

fallthroughकिसी मामले के अंत में कीवर्ड आपके द्वारा खोजे जा रहे व्यवहार के पतन का कारण बनता है, और एक ही मामले में कई मूल्यों की जाँच की जा सकती है।

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