16

一个最小化的例子如下:

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

Scala 2.9.2 编译器一直告诉我,method giveMeBigDecimal is defined twice
我知道如何解决这个问题,但很好奇为什么存在这样的限制。

4

1 回答 1

5

这是 Scala 的实现细节,(不幸的是)进入了规范。Scala 将局部方法实现为具有闭包类型的变量,并且不允许在同一个方法中有两个同名的变量。

于 2012-09-21T06:29:09.033 回答