swift - Swift 中的嵌套函数重载

标签 swift methods user-defined-functions overloading

Swift 中的重载方法按预期工作,但是当我尝试重载嵌套函数时,例如

func foo() {
    func bar(param: Int) {
        // do stuff
    }
    func bar(param: Double) {
        // do stuff
    }

    // call functions here
}

我收到一条错误消息,提示 Definition conflicts with previous value。为什么会这样?

最佳答案

恕我直言,如果您考虑这种变化,这会更清楚:

func foo() {

    let bar: (param: Int) -> () = { p in
        // do stuff
    }

    func bar(param: Double) {
        // do stuff
    }

    // call functions here
}

在您的第一个 bar 函数定义中,您只是声明了一个 (param: Int) -> () 类型的常量。 因此,对于您的第二个声明,您声明了另一个不同类型的常量 (param: Double) -> () 但与已声明的 bar 具有相同的名称。

简而言之,就像你写的那样:

let bar: Int = 0
let bar: Double = 0.0

在这种情况下,编译器也会报错。

希望这对您有所帮助。

关于swift - Swift 中的嵌套函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31730624/

相关文章:

pyspark - pandas udf showString 简单示例错误

ios - iOS 14 SwiftUI 中不需要的位置动画

ios - ARKit 1.5 如何获取垂直平面的旋转

java - 猜数字游戏中的上下边界 - Java

java - OOP:在同一个类中调用公共(public)方法

sql-server-2005 - SQL CLR 聚合函数错误处理

java - 如何修复 Hive 下运行的 geoip2 java 的 "java.lang.NoSuchMethodError"

ios - 添加之前检查值是否在 sqlite 数据库中

ios - swift:一段时间后重复动画

Python 未绑定(bind)方法错误