为什么不允许在方法内重载方法(例如重载闭包)?

om-*_*nom 16 compiler-construction scala

最小化的示例如下:

object Main extends App { 
  def f = {
    def giveMeBigDecimal(x: String) = BigDecimal(x)
    def giveMeBigDecimal(x: Double) = BigDecimal(x)
    (giveMeBigDecimal("1.0"), giveMeBigDecimal(1.0))
  }
}
Run Code Online (Sandbox Code Playgroud)

Scala 2.9.2编译器一直说我知道method giveMeBigDecimal is defined twice
我怎么能解决这个问题,但好奇为什么存在这样的限制.

Kon*_*tov 5

这是一个Scala的实现细节(不幸的是)它已经达到了规范.Scala将本地方法实现为具有闭包类型的变量,并且不允许在同一方法中具有两个具有相同名称的变量.