Is Scala mapValues lazy?
当我打电话给
时
1 2 3 4 5 6 | System.err.println("Before") System.err.flush() val foo: Map[Int, T] = t mapValues (fn(_)) System.err.println(foo.head) //prevent optimiser from delaying the construction of 'foo' System.err.println("After") System.err.flush() |
在其中
1 2 3 4 5 | Before ...head item... After ...debug print statement from fn... ...debug print statement from fn... |
我不明白为什么在打印" After"之后为什么要调用调试打印语句,而且我也不明白为什么要两次获取调试打印语句---除非
是的。它映射到一个保存
如果您不想进行懒惰的评估,请使用严格的
1 |
请记住,
单步执行代码时,您可能会看到两次输出。在调试器窗口中扩展
如果您提供地图