Entiendo que los campos paramétricos (como x
en el ejemplo siguiente) se comportan como los campos normales; por lo que se puede hacer referencia a ellos en los métodos:Campos paramétricos de Scala y argumentos del constructor
class Test(val x: Int) { // x is a parametric field
override def toString = "Test: " + x;
}
Sin embargo, si se le cae la palabra clave val
, el código se compila todavía (y mirando y la salida .class
, x
sigue siendo un miembro de la clase). Entonces me pregunto, ¿cuál es la diferencia entre los campos paramétricos (es decir, val x: Int
en el anterior) y los argumentos del constructor (x: Int
)?
(Con Java en la parte posterior de la cabeza, me habría esperado que el alcance de un constructor como x
a no incluyen un método como toString
.)
Creo 'x' aún así estar se convierte en miembro si se hace referencia en al menos 1 método, independientemente de si está o no prefijado con 'val'. – adelbertc