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

问题描述 投票:0回答:1

最小化示例如下:

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

我知道如何解决这个问题,但很好奇为什么存在这样的限制。

scala closures
1个回答
5
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.