Ist Scala mapValues faul?
Wenn ich anrufe
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()
mitfn
it einer Debug-Druckanweisung erhalte ich die folgende Ausgab
Before
...head item...
After
...debug print statement from fn...
...debug print statement from fn...
Ich verstehe nicht, warum die Debug-Druckanweisungen aufgerufen werden, nachdem "After" gedruckt wurde, und ich verstehe nicht, warum ich sie zweimal erhalte - es sei denn,mapValues
Erstellt eine Lazy Map?