swift中是否有守卫return的shorthand?
Is there a shorthand for guard return in swift?
有没有办法让 guard
自动 return 而无需每次都实际写出来,例如:
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 }
如果我实际上需要在 return
之外做一些事情,我会在我的额外处理中包含 else { return }
位。
这不是什么大麻烦,但拥有它会是件好事。
您可以使用 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
}
但简而言之,不,你不能缩短一个人guard ... else { return }
。
guard
语句必须用 else
键入,对此没有捷径,但您可以使用 if..let
来避免 else
语句。
或将此相关变量语句与单个 guard
语句组合
guard let url = webView.url,
let componentDict = URLComponents(string: url.absoluteString)?.dict,
let id = componentDict["v"],
let idUrl = URL(string: baseUrl + id)
else { return }
有没有办法让 guard
自动 return 而无需每次都实际写出来,例如:
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 }
如果我实际上需要在 return
之外做一些事情,我会在我的额外处理中包含 else { return }
位。
这不是什么大麻烦,但拥有它会是件好事。
您可以使用 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
}
但简而言之,不,你不能缩短一个人guard ... else { return }
。
guard
语句必须用 else
键入,对此没有捷径,但您可以使用 if..let
来避免 else
语句。
或将此相关变量语句与单个 guard
语句组合
guard let url = webView.url,
let componentDict = URLComponents(string: url.absoluteString)?.dict,
let id = componentDict["v"],
let idUrl = URL(string: baseUrl + id)
else { return }