स्विफ्ट 3 के साथ, आप अपनी समस्या को हल करने के लिए वैकल्पिक चैनिंग, स्विच स्टेटमेंट या वैकल्पिक पैटर्न का उपयोग कर सकते हैं।
1. if let
(वैकल्पिक बाइंडिंग / वैकल्पिक चेनिंग)
स्विफ्ट प्रोग्रामिंग भाषा वैकल्पिक श्रृंखलन के बारे में कहा गया है:
कई प्रश्नों को एक साथ जंजीर में डाला जा सकता है, और यदि श्रृंखला में कोई लिंक शून्य है, तो पूरी श्रृंखला इनायत से विफल हो जाती है।
इसलिए, सबसे सरल मामले में, आप अपने वैकल्पिक चाइनिंग ऑपरेशन में कई प्रश्नों का उपयोग करने के लिए निम्न पैटर्न का उपयोग कर सकते हैं:
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if let latitude = latitude as? Double, let longitude = longitude as? Double {
print(latitude, longitude)
}
// prints: 2.0 10.0
2. स्विच स्टेटमेंट में ट्यूपल्स और वैल्यू बाइंडिंग का उपयोग करना
एक साधारण वैकल्पिक चाइनिंग के विकल्प के रूप में, स्विच स्टेटमेंट ट्यूपल्स और वैल्यू बाइंडिंग के साथ उपयोग किए जाने पर एक महीन दाने वाला घोल पेश कर सकता है:
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude, longitude) {
case let (Optional.some(latitude as Double), Optional.some(longitude as Double)):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude, longitude) {
case let (latitude as Double, longitude as Double):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude as? Double, longitude as? Double) {
case let (.some(latitude), .some(longitude)):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
switch (latitude as? Double, longitude as? Double) {
case let (latitude?, longitude?):
print(latitude, longitude)
default:
break
}
// prints: 2.0 10.0
3. if case
(वैकल्पिक पैटर्न) के साथ tuples का उपयोग करना
if case
( वैकल्पिक पैटर्न ) वैकल्पिक गणना के मूल्यों को अपरिवर्तित करने के लिए एक सुविधाजनक तरीका प्रदान करता है। कई प्रश्नों के साथ कुछ वैकल्पिक श्रृंखलन करने के लिए आप इसका उपयोग टुपल्स के साथ कर सकते हैं:
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (.some(latitude as Double), .some(longitude as Double)) = (latitude, longitude) {
print(latitude, longitude)
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (latitude as Double, longitude as Double) = (latitude, longitude) {
print(latitude, longitude)
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (.some(latitude), .some(longitude)) = (latitude as? Double, longitude as? Double) {
print(latitude, longitude)
}
// prints: 2.0 10.0
let dict = ["latitude": 2.0 as AnyObject?, "longitude": 10.0 as AnyObject?]
let latitude = dict["latitude"]
let longitude = dict["longitude"]
if case let (latitude?, longitude?) = (latitude as? Double, longitude as? Double) {
print(latitude, longitude)
}
// prints: 2.0 10.0