我正在阅读苹果公司关于Swift的书,偶然发现了这段代码,经过多次尝试后我还是无法理解。据我了解,此函数返回一个函数。最后两行代码以及所有代码都令人困惑。以及如何将函数分配给变量(第七行)?谢谢。
我已经将它自己输入到了Playground中,但仍然听不懂。
func makeIncrement () -> ((Int) -> Int){
func addOne (number: Int) -> Int{
return 1 + number
}
return addOne
}
var increment = makeIncrement()
increment(7)
答案 0 :(得分:1)
可以将函数视为Swift中的对象(或作为一流函数-值得研究)。 因此可以分配给变量和对象属性。
因此,在您的代码makeIncrement
中,只需将函数addOne
作为变量返回即可。
var increment = makeIncrement()
可以看作是将makeIncrement
中返回的函数分配为变量(或函数对象)increment
。
然后我们可以像实际调用increment
或其他任何函数一样自由调用addOne
函数。
答案 1 :(得分:0)
函数是带有可选输入和返回类型的东西。如果您按一下var increment
,就会看到增量类型为((Int) -> Int)
。这意味着您可以输入Int
并返回Int
。然后,通过调用此函数在最后一行完成此操作。
如果您了解面向对象的编程,您将知道可以随时传递对象,这些对象也具有功能。这样,在您的代码中,它的作用相同,但是现在我们省略了该对象。