2012-09-20 17 views
16

Un ejemplo minimizada es la siguiente:¿Por qué no se permite sobrecargar los métodos dentro de los métodos (por ejemplo, cierres sobrecargados)?

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 compilador me mantienen diciendo que method giveMeBigDecimal is defined twice
sé cómo puedo workaround this, pero curioso por qué existe tal limitación.

+0

Posible duplicado - http://stackoverflow.com/questions/7550302/why-method-overloading-does-not-work-inside-another-method – Rogach

+1

@Rogach en su mayoría pregunta y responde * cómo solucionar * no * por qué es así* –

Respuesta

5

Es un detalle de implementación de Scala que (desafortunadamente) llegó a la especificación. Scala implementa métodos locales como variables con tipo de cierre y no se permite tener dos variables con el mismo nombre en el mismo método.

Cuestiones relacionadas