无法返回具有默认参数值的函数

时间:2015-10-22 06:07:16

标签: swift function

有一个函数嵌套在一个函数中,内部函数有默认参数值,就像这样:

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出现错误"缺少参数。 有没有办法让这两个使用起作用?

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