【问题标题】:Can't return a function with default parameter values无法返回具有默认参数值的函数
【发布时间】:2015-10-22 15:23:18
【问题描述】:

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

let myStr = returnStr()
func returnStr() -> (String) -> (){
    var str = "hello"
    func innerFunc(s: String = "test"){
        str += s
        print(str)
    }
    return innerFunc
}

我可以调用myStr("world"),但不能使用默认参数值调用myStr()。这是正确的吗?我没有找到任何文件说它不支持带有默认参数值的返回函数。 调用myStr() 时,出现错误“Missing argument fro parameter #1 in call”。 有没有办法让这两个使用工作?

【问题讨论】:

    标签: swift function


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 2020-10-21
      • 2020-12-22
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多