加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 在一个Map上的in =一个前缀运算符=?

发布时间:2020-12-16 19:21:03 所属栏目:安全 来源:网络整理
导读:在Martin Odersky的“ Scala编程”一书中,第一章有一个简单的例子: var capital = Map("US" - "Washington","France" - "Paris")capital += ("Japan" - "Tokyo") 第二行也可以写成 capital = capital + ("Japan" - "Tokyo") 我很好奇=符号.在Map类中,我没有
在Martin Odersky的“ Scala编程”一书中,第一章有一个简单的例子:

var capital = Map("US" -> "Washington","France" -> "Paris")
capital += ("Japan" -> "Tokyo")

第二行也可以写成

capital = capital + ("Japan" -> "Tokyo")

我很好奇=符号.在Map类中,我没有找到a =方法.我在一个自己的例子中能够做同样的行为

class Foo() {
    def +(value:String) = {
        println(value)
        this
    }
}

object Main {
  def main(args: Array[String]) = {
   var foo = new Foo()
   foo = foo + "bar"
   foo += "bar"
  }
}

我在问自己,为什么=符号是可能的.如果类Foo中的方法被称为test,则它不起作用.这导致我使用前缀表示法.赋值符号(=)的前缀表示法是?有人可以解释这种行为吗?

解决方法

如果你有一个返回相同对象的符号方法,那么追加equals将执行操作和赋值(作为一个方便的快捷方式).您也可以始终覆盖符号方法.例如,

scala> class Q { def ~#~(q:Q) = this }
defined class Q

scala> var q = new Q
q: Q = Q@3d511e

scala> q ~#~= q

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读