繁体   English   中英

Scala中缀运算符工作奇怪

[英]Scala infix operator working weird

我试图复制Scala in Depth一书中的一个例子。 这个例子是为了证明可变性是多么糟糕,人们应该更喜欢不变性。

然而,我的小实验失败了,程序表现出奇怪的行为。 这是我的计划:

class Vector2D(var x: Double, var y: Double) {
  def -(other:Vector2D) = {
    x = x - other.x
    x = y - other.y
    this
  }
  def magnify(amt: Double) : Vector2D = {
    x *= amt
    y *= amt
    this
  }
  override def toString = s"Vector2D($x, $y)"
}

第二个功能是从书中复制的。 我必须添加两个函数才能使结果看起来像本书所展示的那样。

该程序停止了第一个功能: -

我用过Scala REPL:

scala> val x = new Vector2D(1,1)
x: Vector2D = Vector2D(1.0, 1.0)

scala> val y = new Vector2D(-1, 1)
y: Vector2D = Vector2D(-1.0, 1.0)

scala> x - y
res0: Vector2D = Vector2D(0.0, 1.0)

这看起来不太正确...我也试过this.x = this.x - other.x ,和y一样。 我得到了不同的结果,但不是我想要的结果。 程序有什么问题? 我该怎么解决?

-指定x 2次和y 0次,因此减法不起作用。 改变-方法的第二行从x = y - other.yy = y - other.y

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM