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

Scalaはmethod giveMeBigDecimal is defined twice
は私が知っていることを私に言い続けるコンパイラ2.9.2どのようにすることができますI workaround thisが、好奇心、なぜ、そのような制限が存在します。

+0

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

+1

@Rogachそれは主​​に尋ねて答えます*修正する方法はありません*どうしてこんなことに* –

答えて

5

これはScalaの実装の詳細であり、(残念ながら)仕様に移行しました。 Scalaはローカルメソッドをクロージャ型の変数として実装していますが、同じメソッドで同じ名前の2つの変数を持つことはできません。

関連する問題