【发布时间】:2017-01-21 07:23:29
【问题描述】:
当我打电话时
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()
fn 里面有一个调试打印语句,我得到这个输出:
Before
...head item...
After
...debug print statement from fn...
...debug print statement from fn...
我不明白为什么在打印“After”之后调用调试打印语句,我不明白为什么我得到它两次 --- 除非 mapValues 创建一个惰性映射?
【问题讨论】:
标签: scala dictionary mapping lazy-evaluation