5

有没有一种方法可以guard自动返回而无需每次都实际写出来,例如:

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 }

它不是一个大麻烦,但它会是一件好事。

4

2 回答 2

5

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 }
于 2018-02-26T04:11:40.937 回答
1

您可以使用以下代码编写该代码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 }

于 2018-02-26T04:00:45.667 回答