In Swift, dann ist es ein gemeinsames if let
Muster verwendet optionals auszupacken:Wie entpacke ich ein Optional, wenn Mustervergleichstupel in Swift?
if let value = optional {
print("value is now unwrapped: \(value)")
}
ich zur Zeit diese Art von Pattern-Matching zu tun, aber mit Tupeln in einem Schaltergehäuse, in dem beide params optionals sind:
//url is optional here
switch (year, url) {
case (1990...2015, let unwrappedUrl):
print("Current year is \(year), go to: \(unwrappedUrl)")
}
Doch dieser Druck:
"Current year is 2000, go to Optional(www.google.com)"
gibt es eine Weise, die ich meint optional und Mustererkennung auspacken kann nur, wenn es nicht nil? Derzeit ist meine Abhilfe dies:
switch (year, url) {
case (1990...2015, let unwrappedUrl) where unwrappedUrl != nil:
print("Current year is \(year), go to: \(unwrappedUrl!)")
}
In diesem Beispiel es funktioniert, aber ich wollte nicht wirklich einen expliziten unwrap Operator verwenden, weil ich diese Variable verwenden werde mehr als einmal. Gibt es eine Möglichkeit, es einfach in eine andere Variable auszupacken? –
dann können Sie tun, wie Fall (1990 ... 2015, lassen .Some (unwrappedUrl)): als @Martin R tat. – Sahil