2012-09-20 24 views
16

bir küçültülmüş örneği şudur:Neden yöntemlerin içinde aşırı yükleme yöntemlerine izin verilmiyor (örn. Aşırı yüklü kapaklar)?

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
biliyorum ki beni söyleyip duruyorsun derleyici 2.9.2 nasıl ben workaround this ama meraklı neden böyle bir sınırlama yoktur.

+0

Olası kopya - http://stackoverflow.com/questions/7550302/why-method-overloading-does-not-work-inside-another-method – Rogach

+1

@Rogach çoğunlukla sorar ve cevaplar * nasıl düzeltilir * değil * Neden böyle* –

cevap

5

Bu Scala'nın uygulama ayrıntıları (maalesef) speküle yol açtı. Scala, yerel yöntemleri kapatma türüyle değişkenler olarak uygular ve aynı yöntemde aynı ada sahip iki değişkene sahip olmasına izin verilmez.