2012-09-20 91 views
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)) 
    } 
} 

斯卡拉2.9.2編譯器一直在說我,method giveMeBigDecimal is defined twice
我知道我workaround this,但好奇,爲什麼這樣的限制存在哪有。

+0

可能的重複 - http://stackoverflow.com/questions/7550302/why-method-overloading-does-not-work-inside-another-method – Rogach

+1

@Rogach它主要是問和答案*如何解決*不*爲什麼* –

回答

5

這是一個Scala的實現細節,不幸的是,它的規範。 Scala使用閉包類型作爲變量實現本地方法,並且不允許在同一方法中使用兩個具有相同名稱的變量。