Is there is a way to have guard
automatically return without needing to actually write it out every single time, e.g:
guard let url = self.webView.url else { return }
guard let componentDict = URLComponents(string: url.absoluteString)?.dict else { return }
guard let id = componentDict["v"] else { return }
guard let idUrl = URL(string: baseUrl + id) else { return }
In the case where I actually need to do something in addition to return
, I would include the else { return }
bit with my extra handling.
Its not a huge bother, but it would be a nice thing to have.
You could write that code using if let
:
if let url = self.webView.url,
let componentDict = URLComponents(string: url.absoluteString)?.dict,
let id = componentDict["v"],
idUrl = URL(string: baseUrl + id) {
// do something with idURL
} else {
return // if needed
}
But in short, no, you can't shorten an individual guard ... else { return }
.
guard
statement is typed with else
must be, there is no shortcut for this but you can use if..let
to avoid else
statement.
Or combine this related variables statement with single guard
statement
guard let url = webView.url,
let componentDict = URLComponents(string: url.absoluteString)?.dict,
let id = componentDict["v"],
let idUrl = URL(string: baseUrl + id)
else { return }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With