class Vektor2D (val x: Double, val y: Double) { def +(v: Vektor2D) = new Vektor2D(x + v.x, y + v.y) // Vektoraddition def -(v: Vektor2D) = new Vektor2D(x - v.x, y - v.y) // Vektorsubtraktion def unary_- = new Vektor2D(-x, -y) // Unärer Minusoperator def *(a: Double) = new Vektor2D(a*x, a*y) override def toString = "(" + x + ", " + y +")" } class WrappedDouble(val a: Double) { def *(v: Vektor2D): Vektor2D = v*a } object VektorMain extends Application { implicit def wrapDouble(a: Double) = new WrappedDouble(a) val v = new Vektor2D(1, 2); val w = new Vektor2D(-1, 1) println(-v +","+ (v + w) +","+ (v - w) +","+ 2*v) // (-1,-2),(0,3),(2,1),(2,4) }