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/