Swift:将func传递给func调用传入的func

时间:2016-10-07 16:02:59

标签: function parameter-passing swift3

如何将函数传递给另一个函数,而不会导致传入的函数在作为参数被读取时被调用?

以下是一个简单地通过参数调用的函数示例。

func second() {
    print("second")
}

func first(_: ()) {
    print("first")
}

first(second())

-------console output--------
second
first

我希望将第二个传递给第一个,这样我就可以在第一个体内的某个地方调用第二个(),但正如你所看到的,第二个只是作为一个参数立即调用。

1 个答案:

答案 0 :(得分:0)

func first(_: ()) {
    print("first")
}

这是一个以Void为参数的函数(并忽略它)。 Void是空元组()的类型。你的意思是:

func first(f: () -> Void) {}

这是一个函数,它接受一个不返回任何内容的函数(并调用其参数f而不是忽略它)。

first(second())

这会调用second,然后将结果传递给first。你的意思是:

first(second)