如何调用一个传递给函数的闭包?

时间:2014-06-13 18:19:01

标签: closures swift

我怀疑我错过了一些非常明显错误的东西,所以请原谅我,如果我有点厚。

我在闭包中看到的所有示例都是用于将闭包传递给数组映射函数。我想编写自己的函数,它接受一个闭包

这就是我的尝试

func closureExample(numberToMultiply : Int, myClosure : (multiply : Int) -> Int) -> Int
{
    // This gets a compiler error because it says myClosure is not an Int
    // I was expecting this to do was to invoke myClosure and return an Int which
    // would get multiplied by the numberToMultiply variable and then returned
    return numberToMultiply * myClosure
}

我完全不知道我做错了什么

请帮助!!

2 个答案:

答案 0 :(得分:2)

使用()调用任何函数的方式相同。

return numberToMultiply * myClosure(multiply: anInteger)

一个工作示例:

func closureExample(numberToMultiply : Int, myClosure : (multiply : Int) -> Int) -> Int {
    return numberToMultiply * myClosure(multiply: 2)
}

closureExample(10, { num in
    return 2*num
}) // 40

答案 1 :(得分:1)

您将闭包参数视为使用参数名称命名的函数。 myClosure是需要在numberToMultiply上运行的闭包,因此您需要:

return myClosure(numberToMultiply)

这会将numberToMultiply传递给你的闭包,并返回返回值。