为什么Scala编译不允许作用域方法重载?

时间:2018-11-02 15:18:28

标签: 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 = ???

问题:

  • 为什么会这样?
  • 在范围内和范围外使用方法有什么区别?

1 个答案:

答案 0 :(得分:0)

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

您的“正确编译”代码仅在直接放在类/对象内部时才起作用。