हम जानते हैं कि हम if let
वैकल्पिक शून्य की जांच के लिए शॉर्टहैंड के रूप में एक कथन का उपयोग कर सकते हैं ।
हालाँकि, मैं तार्किक और ऑपरेटर का उपयोग करके एक और अभिव्यक्ति के साथ संयोजन करना चाहता हूं &&
।
इसलिए, उदाहरण के लिए, यहां मैं अनप्लग करने के लिए वैकल्पिक चाइनिंग करता हूं और वैकल्पिक रूप से अपने रूटव्यूकंट्रोलर को टैबबेरकंट्रोलर में डाउनकास्ट करता हूं। लेकिन बयानों के बजाय नेस्टेड होने के बावजूद, मैं उन्हें संयोजित करना चाहूंगा।
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
संयुक्त दे:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
उपरोक्त संकलन त्रुटि देता है अनसुलझे पहचानकर्ता का उपयोग 'tabBarController'
सरल बनाना:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
यह एक संकलन त्रुटि देता है एक सशर्त बंधन में बाध्य मूल्य वैकल्पिक प्रकार का होना चाहिए । विभिन्न वाक्यात्मक परिवर्तनों का प्रयास करते हुए, प्रत्येक एक अलग संकलक त्रुटि देता है। मुझे अभी तक ऑर्डर और कोष्ठक के विजेता संयोजन का पता लगाना है।
तो, सवाल यह है कि क्या यह संभव है और यदि ऐसा है तो सही वाक्यविन्यास क्या है?
ध्यान दें कि मैं एक if
बयान के साथ यह करना चाहता हूं न कि एक switch
बयान या एक टर्नरी ?
ऑपरेटर।
var foo : Int? = 10; if let bar = foo { if bar == 10 { println("Great success!") }}
if let bar = foo && bar == 10
है Use of unresolved identifier "bar"
(दूसरी पर bar
ज़ाहिर है,)।
bridgeToObjectiveC
बीटा 5 में चला गया है (और संभवतः सामान्य उपयोग के लिए कभी संभव नहीं था)। 2. first
स्विफ्ट के बिल्ट-इन Array
प्रकार पर एक विधि है।