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

스칼라 method giveMeBigDecimal is defined twice
내가 아는 나에게 말을 계속 컴파일러 2.9.2 내가 어떻게 workaround this하지만 호기심이 왜 그런 제한이 존재한다.

+0

가능한 복제본 - http://stackoverflow.com/questions/7550302/why-method-overloading-does-not-work-inside-another-method – Rogach

+1

@Rogach 대부분 질문 및 답변 * 해결 방법 * 왜 이렇게이다* –

답변

5

스칼라의 구현 세부 사항입니다. (불행히도) 사양에 도달했습니다. 스칼라는 로컬 메소드를 클로저 유형의 변수로 구현하며 동일한 메소드에서 동일한 이름을 가진 두 개의 변수를 가질 수 없습니다.

관련 문제