首页 > 解决方案 > 如何将函数作为可选参数传递 Swift

问题描述

Swift 新手,我目前正在通过以下方式将函数作为可选参数传递:

import Foundation 

func foo()
{
    print("Foo")
}

func bar()
{
    print("Bar")
}

func dummy()
{
    return
}

func myFunc()
{
    myFunc(callBack: dummy())
}

func myFunc(callBack: (Void))
{
    foo()
    callBack
}

myFunc()
myFunc(callBack: bar())

即利用多态性

这似乎是一种不优雅的方法,有没有更好的方法,

谢谢,汤姆

编辑:

我知道我可以通过以下方式缩短此时间:

import Foundation 

func foo()
{
    print("Foo")
}

func bar()
{
    print("Bar")
}

func dummy()
{
    return
}

func myFunc(callBack: (Void) = dummy())
{
    foo()
    callBack
}

myFunc()
myFunc(callBack: bar())

但我仍然会说这是一个不雅的解决方案

标签: swift

解决方案


您可以轻松地将函数的默认值定义为参数:

func foo(completion: () -> Void = { }) {
    completion()
}

你也可以让它默认为 nil:

func foo(completion: (() -> Void)? = nil) {

当它是一个可选的闭包时,你必须这样称呼它:

completion?()

推荐阅读