func makeIncrementer() -> (Int -> Int) {
func addOne(number: Int) -> Int {
return 1 + number
}
return addOne
}
上面是一个简单的示例代码,用于将函数作为Swift中的第一类类型 现在,当我按以下方式调用该函数时:
var increment = makeIncrementer()
increment(7)
它完美地给出了答案
但出于好奇,我尝试了直接的方法,即
makeIncrementer(7) // error
并且它给出了错误
为什么会这样? 附:我是Swift的初学者
答案 0 :(得分:3)
调用makeIncrementer()
返回该函数,因此要调用它,请在第二组括号中传递参数:
makeIncrementer()(7)
出现错误消息是因为Swift将makeIncrementer(7)
解释为传递给7
的{{1}},而makeIncrementer
没有任何参数。希望将来Swift错误消息更加友好。虽然技术上是正确的,但给出的错误信息会导致很多混乱。