返回函数的函数如何工作?

时间:2019-06-16 09:01:54

标签: swift function

我正在阅读苹果公司关于Swift的书,偶然发现了这段代码,经过多次尝试后我还是无法理解。据我了解,此函数返回一个函数。最后两行代码以及所有代码都令人困惑。以及如何将函数分配给变量(第七行)?谢谢。

我已经将它自己输入到了Playground中,但仍然听不懂。

func makeIncrement () -> ((Int) -> Int){
    func addOne (number: Int) -> Int{
        return 1 + number
    }
    return addOne
}
var increment = makeIncrement()
increment(7)

2 个答案:

答案 0 :(得分:1)

可以将函数视为Swift中的对象(或作为一流函数-值得研究)。 因此可以分配给变量和对象属性。

因此,在您的代码makeIncrement中,只需将函数addOne作为变量返回即可。

var increment = makeIncrement()可以看作是将makeIncrement中返回的函数分配为变量(或函数对象)increment

然后我们可以像实际调用increment或其他任何函数一样自由调用addOne函数。

答案 1 :(得分:0)

函数是带有可选输入和返回类型的东西。如果您按一下var increment,就会看到增量类型为((Int) -> Int)。这意味着您可以输入Int并返回Int。然后,通过调用此函数在最后一行完成此操作。

如果您了解面向对象的编程,您将知道可以随时传递对象,这些对象也具有功能。这样,在您的代码中,它的作用相同,但是现在我们省略了该对象。