swift - पैटर्न मिलान और सशर्त रूप से एक एकल स्विच स्टेटमेंट में बाँधें



swift2 switch-statement (1)

बेशक, आप कंडिशनल कास्टिंग पैटर्न case let x as Type इस्तेमाल case let x as Type कर सकते हैं:

let x: Any = "123"

switch x {
case let s as String:
    print(s)   //use s
case let i as Int:
    print(i)   //use i
case let b as Bool:
    print(b)   //use b
default:
    fatalError()
}

क्या यह लिखने का एक तरीका है if / else if / else एक स्विच स्टेटमेंट के रूप में सीढ़ी?

let x: Any = "123"

if let s = x as? String {
    useString(s)
}
else if let i = x as? Int {
    useInt(i)
}
else if let b = x as? Bool {
    useBool(b)
}
else {
    fatalError()
}

यहां मेरा प्रयास है:

switch x {
case let s where s is String:   useString(s)
case let i where i is Int:      useInt(i)
case let b where b is Bool:     useBool(b)
default: fatalError()
}

यह सफलतापूर्वक सही रास्ता चुनता है, लेकिन s / i / b अभी भी प्रकार के Any चेक इनको कास्टिंग करने में कोई प्रभाव नहीं पड़ता है। यह मुझे मजबूर करने के लिए मजबूर as! उपयोग करने से पहले

क्या प्रकार पर स्विच करने का कोई तरीका है, और इसे एक नाम के साथ बाँध सकता है, सभी एक switch स्टेटमेंट में?





conditional-binding