scala - Scala 中的赋值方法

标签 scala operator-overloading variable-assignment scala-2.8

执行此代码时:

var a = 24
var b = Array (1, 2, 3)
a = 42
b = Array (3, 4, 5)
b (1) = 42

我在这里看到三个(五个?)作业。在这种情况下调用的方法调用的名称是什么?
它是运算符重载吗?

更新:
我可以创建类和重载赋值吗? ( x = y 不是 x(1) = y )

最佳答案

有这个文件:

//assignmethod.scala
object Main {
  def main(args: Array[String]) {
    var a = 24
    var b = Array (1, 2, 3)
    a = 42
    b = Array (3, 4, 5)
    b (1) = 42
  }
}

运行 scalac -print assignmethod.scala给我们:
[[syntax trees at end of cleanup]]// Scala source: assignmethod.scala
package <empty> {
  final class Main extends java.lang.Object with ScalaObject {
    def main(args: Array[java.lang.String]): Unit = {
      var a: Int = 24;
      var b: Array[Int] = scala.Array.apply(1, scala.this.Predef.wrapIntArray(Array[Int]{2, 3}));
      a = 42;
      b = scala.Array.apply(3, scala.this.Predef.wrapIntArray(Array[Int]{4, 5}));
      b.update(1, 42)
    };
    def this(): object Main = {
      Main.super.this();
      ()
    }
  }
}

如您所见,编译器只是将最后一个( b (1) = 42 )更改为方法调用:
b.update(1, 42)

关于scala - Scala 中的赋值方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2809984/

相关文章:

scala - 我无法理解 Scala Spark 中的 'RDD.map{ case (A, B) => A } '

scala - Clojure 中的 mapcat 和 Scala 中的 flatMap 在操作方面有什么区别?

scala - 在子类中获取 typeOf[this.type]

scala - Spark Dataframe Join - 重复列(非连接列)

c++ - 两个不是我自己的类的自定义赋值运算符

Python 将多个变量初始化为相同的初始值

c++ - 指向用于绑定(bind)的友元运算符重载的函数指针

派生类上的 C++ 赋值运算符实现

有人可以解释什么是强更新并举例说明吗?

const 指针固定到可变变量