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 }