在类或对象体中,这适用:
def a(s:String) {}
def a(s:Int) {}
Run Code Online (Sandbox Code Playgroud)
但是如果将它放在另一个方法中,它就不会编译:
def something() {
def a(s:String) {}
def a(s:Int) {}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
huy*_*hjl 10
请注意,您可以通过创建对象来获得相同的结果:
def something() {
object A {
def a(s:String) {}
def a(i: Int) {}
}
import A._
a("asd")
a(2)
}
Run Code Online (Sandbox Code Playgroud)
在您的示例中,您定义了本地函数.在我的例子中,我正在声明方法.对象,类和特征允许静态重载.
我不知道为什么它不允许本地函数,但我的猜测是重载是一个可能的错误来源,并且在代码块中可能不是很有用(可能你可以在该块作用域中使用不同的名称).我认为它在类中是允许的,因为它在Java中是允许的.