scala - 副作用 mutable.Map scala

标签 scala side-effects

当我尝试在可变 Map 中插入一个元素时,我希望这个元素插入到我的 Map 而不是返回 Map(如 PF,不可变对象(immutable对象) ecc ...) 出于这个原因,我使用了可变集合,但在我的 map 中,“a”不可能插入元素(副作用),但此更新仅在返回类型中,e 不在 a 中。 为什么?如何在我的 map a 中插入新元素 (x -> y)??

def a = scala.collection.mutable.map[Int,Int]()

def x = 5
def y = 6

a+= (x -> y)

println(a.size) // print 0

最佳答案

那是因为你将a定义为def,意思是一个方法。这意味着每次调用 a 时,都会返回可变映射的一个新实例。你想要的是一个val:

@ val a = mutable.Map[Int, Int]()
a: mutable.Map[Int, Int] = Map()

@ a += (5 -> 6)
res2: mutable.Map[Int, Int] = Map(5 -> 6)

关于scala - 副作用 mutable.Map scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57198703/

相关文章:

java - 实现一个不仅仅是设置变量的 Scala 构造函数

scala - 为什么要在 Predef.scala 中重新定义类型变量?

scala - 反序列化选项返回 None 而不是 json4s 中的异常

unit-testing - 具有副作用的 F# UnitTesting 函数

c++ - 在 C++ 中将对象传递给函数时的副作用

c++ - 我在这里遗漏了一些简单的东西(运行时执行优先级?)

Scala 无形 : derive type from Mapper

scala - Spark流式批量查找数据

java-8 - Java 8 流中的副作用

java - 在 Java 流中查看的替代方法