scala - 在 Scala 中,赋值运算符 "="是方法调用吗?

标签 scala

根据 Scala 书,“在 Scala 中编程” -
Scala is an object-oriented language in pure form: every value is an object and every operation is a method call. For example, when you say 1 + 2 in Scala, you are actually invoking a method named + defined in class Int.
从这个意义上说,使用“=”运算符的赋值操作呢?这也是一种方法吗?似乎不太可能,因为它必须存在于所有类或某个公共(public)父类(super class)(例如 java.lang.Object ?)中,所有类都必须从中继承它。还是不是所有的操作都是 Scala 中的真正方法调用?

最佳答案

的一点补充贾廷 回答。有一种情况是=可以认为是一个方法调用,但实际上它只是一个语法糖。在 Scala 的 OO 部分,其中丑陋的 var的生活,你可以写如下:

class Test { 
  private var x0: Int = 0
  def x = x0
  def x_=(a: Int) = x0 = a 
}

然后您可以将新整数分配给 x :
scala> val t = new Test
t: Test = Test@4166d6d3

scala> t.x = 1
t.x: Int = 1

最后一行将被脱糖为 t.x_=(1) .我认为在这种情况下,考虑到语法糖,可以说 =是一个方法调用。

关于scala - 在 Scala 中,赋值运算符 "="是方法调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19086851/

相关文章:

scala - 光滑2 : Delete row in slick with play framework

scala - 驯服 Scala 类型系统

scala - sbt-assembly:如何将依赖项 jar 与主 jar 链接?

scala - 隐式转换和 null

swing - Scala Wrapper 类通过扩展 Component 和 SequentialContainer.Wrapper 特征,我对特征有正确的理解吗?

scala - 过滤字符串序列直到在scala中找到键的功能方法

scala - Flink SVM 90% 错误分类

scala - 喷涂路由多个深度路径

java - Scala:Trait Companion Object 在 Java 中不可见

scala - Try[Future[Int]] 行为异常