我只是在试验一些SWIFT代码样本,通过犯一个错误,我发现了我们非常奇怪的行为(对我来说),我不明白.
我已经定义了这个函数:
func makeIncrementer(number: Int) -> ((Int) -> Int) {
func incrementer(inputNumber: Int) -> Int {
return inputNumber+1
}
return incrementer
}
*是的,没有使用中的参数编号,这是无意的错误,但导致了我现在询问的这个奇怪的行为.
然后我调用了代码:
let functionVariable = makeIncrementer(number: 7)
print(functionVariable)
print(functionVariable(7))
这导致了以下输出:
(Function)
8
在这之后,我意识到make Incrementer函数中的number参数没有意义,所以我删除了make Incrementer调用中的参数,但Xcode没有显示任何错误消息.所以我试着重建这个:
let functionVariable = makeIncrementer(number: )
print(functionVariable)
print(functionVariable(7))
我收到了这样的结果:
(Function)
(Function)
以下是我的问题:
- 它怎么可能建成呢?参数编号不是可选的,还是可选的?
- 即使参数编号是可选的,它怎么会产生两个函数类型的对象呢?
非常感谢你的解释
*[编辑]-更正了拼写错误,原来是Print(UnctionVariabl)而不是print(UnctionVariable)