2015-06-08 9 views
30

में पैटर्न मिलान हाल ही में मैंने ऐप्पल से डब्ल्यूडब्ल्यूडीसी 2015 की मुख्य सूचना देखी है। मैंने कुछ दस्तावेज भी देखे लेकिन मुझे "अगर पैटर्न में मिलान पैटर्न" नहीं मिल रहा है, तो यह दिखाए गए स्लाइडों में से एक पर कैसे लिखा गया था। (Apple Events से 68min 00sec वीडियो)स्विफ्ट 2 - "अगर"

क्या आप जानते हैं कि इसका क्या अर्थ है? या वाक्यविन्यास?

उत्तर

57

यह वास्तव में इसका मतलब है कि यदि कथन अब स्विच स्टेटमेंट जैसे पैटर्न मिलान का समर्थन करते हैं। उदाहरण के लिए, यदि अब enum के मामलों पर "स्विच" करने के लिए कथन/अन्यथा का उपयोग करने का एक वैध तरीका निम्नलिखित है।

enum TestEnum { 
    case One 
    case Two 
    case Three 
} 

let state = TestEnum.Three 

if case .One = state { 
    print("1") 
} else if case .Two = state { 
    print("2") 
} else { 
    print("3") 
} 

और निम्नलिखित अब पता चल सके कि someInteger दी गई सीमा के भीतर है का एक स्वीकार्य तरीका है।

let someInteger = 42 
if case 0...100 = someInteger { 
    // ... 
} 

यहाँ से The Swift Programming Language

let someOptional: Int? = 42 
// Match using an enumeration case pattern 
if case .Some(let x) = someOptional { 
    print(x) 
} 

// Match using an optional pattern 
if case let x? = someOptional { 
    print(x) 
} 
+4

कुछ और वैकल्पिक पद्धति का उपयोग कर उदाहरण हैं और पिछले दो बयान कर रहे हैं - अगर मैं इसे सही ढंग से समझ - करने के लिए अच्छी तरह से ज्ञात बराबर 'यदि जाने एक्स = someOptional {} '। –

+1

यह एक रोमांचक संभावना है, स्विफ्ट बाहर आने के बाद से मैं इसके लिए इंतजार कर रहा हूं। – cjnevin

+7

@MartinR हाँ वे हैं, जो आपको आश्चर्यचकित कर सकते हैं कि 'अगर चलो x = someOptional' वैकल्पिक बाध्यकारी वाक्यविन्यास का उपयोग करने के बजाय वैकल्पिक पैटर्न उपयोगी क्यों हो सकता है। वास्तव में यह बहुत उपयोगी नहीं है जब यहां सरल 'if' कथनों में उपयोग किया जाता है, लेकिन 'for' या' while' loops के साथ अधिक उपयोगी होता है (जैसे 'केस के लिए x? ArrayOfOptionalInts' में जो केवल गैर-शून्य मानों पर लूप करता है सरणी), या अधिक जटिल 'if' जैसे स्टेटमेंट्स' if if let (x ?, y?) में कुछ फनकटैटरेटर्नैटुपुपऑफऑप्शनल्स() 'जो केवल तभी सही होगा यदि ट्यूपल में दोनों तत्व गैर-शून्य हैं और फिर एक्स और वाई दोनों को बाध्य करते हैं एक ही समय में। – AliSoftware

संबंधित मुद्दे