Я не понимаю, почему у вас не может быть указатель охраны внутри возвращаемой функции.Как вы помещаете инструкцию охраны в функцию в Swift?
func sayHello(text: String?) -> String {
guard let whatever = text else {
...
return
}
return "aString"
}
Почему это неправильно? Xcode дает мне ошибку «функция non-void должна возвращать значение» в операторе return
в закрытии guard
, так как он считает, что оператор return
является оператором return
. Как вы проводите различие между оператором guard
return
и оператором return
?
То же самое происходит в обработчиках заканчивания, которые не возвращают:
func anotherFunction() -> Bool {
aFunction("hello", completion: { (status) -> Void in
if status == "good" {
return true // I want anotherFunction() to return this not the handler
} else {
return false
}
})
}
Xcode думает, что я пытаюсь иметь обработчик завершения аннулируются возвращают Bool
, вместо этого я хочу, чтобы функция возвращать Bool
на основе результат обработчика завершения.
Думаю, я понимаю, почему вы не можете сделать это в примере обработчика завершения, но вы обязательно должны иметь инструкцию охраны внутри не-void-функции. Я попробовал заменить return
(в примере guard
) с break
и continue
, ни один из которых не работал.
Спасибо!
Если я возвращаю пустую строку, это означает, что функция прекратит выполнение. Что делать, если я просто хочу выполнить из инструкции охраны, но не из всей функции? – Jake
Затем оставьте 'else' пустым. Никакого кода, ничего не выполнить, двигаться дальше. Но я был бы упущен, если бы не заметил, что это делает заявление о бесполезности. Это должно быть для проверки целостности ваших данных, но если вы проверите его, и результат не увенчается успехом, но затем вы хотите продолжить выполнение, я не вижу точки охраны в первую очередь. – pbush25
Вы не можете оставить его пустым. У охранника должен быть контроль передачи. – Jake