有一个函数嵌套在一个函数中,内部函数有默认参数值,就像这样:
let myStr = returnStr()
func returnStr() -> (String) -> (){
var str = "hello"
func innerFunc(s: String = "test"){
str += s
print(str)
}
return innerFunc
}
我可以调用myStr("world")
,但无法使用默认参数值调用myStr()
。这是正确的吗?我没有发现任何文件表明它不支持使用默认参数值的返回功能。
调用myStr()
时,调用"中的参数#1出现错误"缺少参数。
有没有办法让这两个使用起作用?
答案 0 :(得分:1)
因为innerFunc
的签名是String->Void
每当您声明let x = innerFunc
时。 x
始终为String->Void
类型。
当您提供默认参数时,它不会生成其他类型,例如Void->Void
,
例如
func sayHello(name: String, to otherName: String = "my self", excited: Bool = false){
// do something
}
let x = sayHello // x is (String, to: String, excited: Bool) -> Void