函数类型的默认参数值作为Swift 3中的参数类型

时间:2017-05-01 10:47:08

标签: swift parameter-passing default-parameters function-parameter

如果需要,我想传递一个函数在完成块内调用,但我不知道如何为函数设置默认参数。

 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 个答案:

答案 0 :(得分:0)

您可以将默认参数传递给类似的函数

func functionToCall(message: String = "You message") {
    print(message)
}

答案 1 :(得分:0)

首先,问题应该提供尽可能具体的代码块。

问题

那么,你有一个函数foo接受一个类型为closure的参数,你想提供一个default value权利吗?

解决方案

这是代码

func foo(completion: ()->() = { _ in print("Default completion") }) {
    completion()
}

测试

现在你可以调用foo传递你自己的关闭

foo { print("Hello world") } // Hello world

或使用默认参数

foo() // Default completion

答案 2 :(得分:0)

我已移除showAlert中的所有参数,但funcToCall只是为了显示如何为函数提供默认参数:

extension UIViewController {

    private static func defaultFuncToCall() {
        //
    }

    func showAlert(funcToCall: @escaping () -> () = UIViewController.defaultFuncToCall) {
        //
    }
}