Значение параметра по умолчанию для типа функции в качестве типа параметра в Swift 3
Я хочу передать функцию для вызова внутри блока завершения, если мне нужно, но я не знаю, как установить параметр по умолчанию для функции.
func showAlert(controllerTitle: String, message: String, actionTitle: String, preferredStyle: UIAlertControllerStyle = .alert, actionStyle: UIAlertActionStyle = .default, funcToCall: () -> ()){
let alert = UIAlertController(title: controllerTitle, message: message, preferredStyle: preferredStyle)
alert.addAction(UIAlertAction(title: actionTitle, style: actionStyle, handler: {(action) -> Void in
funcToCall()
}))
self.present(alert, animated: true, completion: {() -> Void in })
}
3 ответа
Решение
Прежде всего, вопрос должен обеспечивать максимально четкий блок кода.
Вопрос
Итак, у вас есть функция foo
который принимает параметр типа замыкания, и вы хотите предоставить default value
право?
Решение
Вот код
func foo(completion: ()->() = { _ in print("Default completion") }) {
completion()
}
тестирование
Теперь вы можете позвонить foo
передавая свое собственное закрытие
foo { print("Hello world") } // Hello world
Или используя параметр по умолчанию
foo() // Default completion
Я удалил все параметры из showAlert
но funcToCall
просто чтобы показать, как вы можете предоставить параметр по умолчанию для функции:
extension UIViewController {
private static func defaultFuncToCall() {
//
}
func showAlert(funcToCall: @escaping () -> () = UIViewController.defaultFuncToCall) {
//
}
}
Вы можете передать параметр по умолчанию в функцию, например, так
func functionToCall(message: String = "You message") {
print(message)
}