Al experimentar con algunas cosas en el REPL, llegué a un punto en el que necesitaba algo como esto:Sintaxis simple de Scala: tratando de definir el operador "==": ¿qué me falta?
scala> class A(x:Int) { println(x); def ==(a:A) : Boolean = { this.x == a.x; } }
Sólo una clase simple con un operador "==".
¿Por qué no funciona ???
Aquí está el resultado:
:10: error: type mismatch; found : A required: ?{val x: ?} Note that implicit conversions are not applicable because they are ambiguous: both method any2ArrowAssoc in object Predef of type [A](x: A)ArrowAssoc[A] and method any2Ensuring in object Predef of type [A](x: A)Ensuring[A] are possible conversion functions from A to ?{val x: ?} class A(x:Int) { println(x); def ==(a:A) : Boolean = { this.x == a.x; } } ^
Ésta es Scala 2.8 RC1.
Gracias
Supongo que es más exacto decir que no es * accessible * como un campo, es decir, no genera métodos de acceso a menos que lo declare como 'val' cuando lo pasa. –
Mm hmm. Alex puede querer agregar 'val' por otras razones, pero alguien podría leer su respuesta como que implica que es necesaria para acceder a' x' en el cuerpo de 'iguales'. –
He editado mi respuesta para aclarar que necesitas 'val' para acceder a' a.x' en el cuerpo de 'equals'. –