Есть ли сокращение для быстрого возвращения охранника?
Есть ли способ иметь 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 }
немного с моей дополнительной обработкой.
Это не большая проблема, но было бы неплохо иметь.
2 ответа
Решение
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 }
Вы можете написать этот код, используя 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 }
,