In Swift, there's a common if let
pattern used to unwrap optionals:
if let value = optional {
print("value is now unwrapped: (value)")
}
I'm currently doing this kind of pattern matching, but with tuples in a switch case, where both params are optionals:
//url is optional here
switch (year, url) {
case (1990...2015, let unwrappedUrl):
print("Current year is (year), go to: (unwrappedUrl)")
}
However, this prints:
"Current year is 2000, go to Optional(www.google.com)"
Is there a way I can unwrap my optional and pattern match only if it's not nil? Currently my workaround is this:
switch (year, url) {
case (1990...2015, let unwrappedUrl) where unwrappedUrl != nil:
print("Current year is (year), go to: (unwrappedUrl!)")
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…