我遇到了一种奇怪的行为。下面的代码产生一个编译错误,其中我在消息中调用bar():“参数#1调用缺少参数”
func bar() {
println("bar with no argument")
}
class ClassA {
func bar(varOfAnyType: String) {
println("bar with argument")
}
func foo() {
bar()
}
}
如果我更改bar()函数的名称,那么我不会收到任何错误:
func barNameChanged() {
println("bar with no argument")
}
class ClassA {
func bar(varOfAnyType: String) {
println("bar with argument")
}
func foo() {
barNameChanged()
}
}
编译器不允许重写类外部函数的原因是什么?
干杯,丹尼尔
目前,无论重载如何,Swift编译器都无法区分具有相同名称的方法和全局函数。
解决方案是在全局函数前添加其模块名称,例如,
func bar() { }
class ClassA {
func bar(anything: String) {}
func foo() { Module.bar() }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句