覆盖 class 之外的函数
Overriding a function outside its class
我遇到了一个奇怪的行为。以下代码会在我调用 bar() 时产生编译错误并显示以下消息:"Missing argument for parameter #1 call"
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()
}
}
编译器不允许覆盖 class 之外的函数的原因是什么?
干杯,丹尼尔
目前,Swift编译器无法区分同名的方法和全局函数,无论重载如何。
解决办法是在全局函数前加上模块名,例如
func bar() { }
class ClassA {
func bar(anything: String) {}
func foo() { Module.bar() }
}
我遇到了一个奇怪的行为。以下代码会在我调用 bar() 时产生编译错误并显示以下消息:"Missing argument for parameter #1 call"
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()
}
}
编译器不允许覆盖 class 之外的函数的原因是什么?
干杯,丹尼尔
目前,Swift编译器无法区分同名的方法和全局函数,无论重载如何。
解决办法是在全局函数前加上模块名,例如
func bar() { }
class ClassA {
func bar(anything: String) {}
func foo() { Module.bar() }
}