Scala compile为什么会';不允许范围内方法过载?

Scala compile为什么会';不允许范围内方法过载?,scala,compiler-errors,compilation,Scala,Compiler Errors,Compilation,我注意到,scala编译器不允许范围内方法重载。 Scala版本2.11.12 不编译: val result = { def loop(a: String): String = ??? def loop(i: Int): Int = ??? ??? } def loop(a: String): String = ??? def loop(i: Int): Int = ??? val result = ??? 正确编译: val result = { def loop

我注意到,scala编译器不允许范围内方法重载。 Scala版本2.11.12

不编译:

val result = {
  def loop(a: String): String = ???

  def loop(i: Int): Int = ???

  ???
}
def loop(a: String): String = ???

def loop(i: Int): Int = ???

val result = ???
正确编译:

val result = {
  def loop(a: String): String = ???

  def loop(i: Int): Int = ???

  ???
}
def loop(a: String): String = ???

def loop(i: Int): Int = ???

val result = ???
问题:

val result = {
  def loop(a: String): String = ???

  def loop(i: Int): Int = ???

  ???
}
def loop(a: String): String = ???

def loop(i: Int): Int = ???

val result = ???
  • 为什么会这样
  • 范围内的方法和范围外的方法有什么区别

重载发生在对对象调用方法时,而裸函数调用不会发生。因此,只能为类定义重载方法。块不是类,因此不能有重载方法


您的“正确编译”代码只有直接放在类/对象中才能工作。

我想这只是重申了这个问题