【问题标题】:Is it instance name/id that scala REPL prints?scala REPL 打印的是实例名称/ID吗?
【发布时间】:2020-04-13 15:47:18
【问题描述】:

Tutorial 一开始就提到了可变集合,但是为什么 REPL 会在添加新元素时将实例名称从 res4 更改为 res5? 'res' 不是 REPL 打印的实例名称吗?下面是上下文中的代码。斯卡拉初学者。如果问题是微不足道的,请多多包涵。

scala> val set = scala.collection.mutable.Set[Int]()
val set: scala.collection.mutable.Set[Int] = Set()

scala> set += 1
val res0: scala.collection.mutable.Set[Int] = Set(1)

scala> set += 2 += 3
val res1: scala.collection.mutable.Set[Int] = Set(1, 2, 3)

【问题讨论】:

  • 不,REPL 打印变量名。它为未命名的表达式生成新名称。多个变量可以指向同一个对象。

标签: scala scala-repl


【解决方案1】:

但引用并没有改变,它的意思是res0 == res1。 Scala repl 将为未分配任何名称的表达式生成名称,无论它是否可变。

另外看看docs。对于mutable.Set,方法+= 的结果是Set.this.type。由于返回了一个值,因此必须为其分配一个名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2021-06-02
    相关资源
    最近更新 更多