vistazo a este ejemplo:¿Cómo expongo los argumentos del constructor de Scala como miembros públicos?
class Point(x: Double, y: Double){
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y
}
}
Como se puede ver quiero definir un método +
operador de la clase Point. Pero esto no funcionará porque en ese método, x
y y
no se puede acceder a la variable local sourcePoint
ya que son privadas, por lo que cambió el ejemplo en esto: sin embargo
class Point(_x: Double, _y: Double){
var x = _x
var y = _y
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y)
}
}
Eso, obviamente, trabajó, ¿Hay alguna manera más fácil de definir estas variables en lugar de ir desde _x -> xy _y -> y?
¡Gracias por su ayuda y tiempo! :)
Cuando escribe 'clase Point (x: Double, y: Double)', 'x' y' y' son solo parámetros para el constructor primario, no fileds en la clase. Para convertirlos en campos de la clase, necesitas 'val' o' var'. – markmarch
Aight, gracias! Parece obvio ahora jaja;) – user1285925
Esto es un poco OT, pero no use return explícito en su método '+', los retornos explícitos en scala se traducen en una excepción que se lanza y se atrapa directamente y luego se devuelve el resultado. Solo use esto para salir de los cierres. – drexin