我已經定義了下面的對象。但我不明白爲什麼mapValues只能在test1中執行。即。爲什麼是輸出:返回選項時mapValues中的奇怪行爲
調用TEST1
調用TEST2
映射:一個
映射:兩個
映射:映射(1 - > XX,2 - > XX )
我用scala 2.10和2.11 w來測試它ith同樣的結果。
object Test {
def test1: Option[String] = {
val map = Map(1 -> "One", 2 -> "Two")
val mapped = map.mapValues { v =>
println("Mapping: " + v)
"Xx"
}
None
}
def test2: Option[String] = {
val map = Map(1 -> "One", 2 -> "Two")
val mapped = map.mapValues { v =>
println("Mapping: " + v)
"Xx"
}
println("Mapped: " + mapped)
None
}
def main(args: Array[String]): Unit = {
println("Calling test1")
test1
println("Calling test2")
test2
}
}
並說我想強制mapValues。推薦的方式是什麼? – user79074
@ user79074您可以在'mapValues'之後鏈接'.view.force'來強制執行評估。或者使用@dhg建議的嚴格地圖。 –