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
स्टेटमेंट में?