【发布时间】:2020-08-16 11:51:20
【问题描述】:
当我尝试打印 MapView 时,我收到了一条消息 MapView(<not computed>)
val phonebook = Map("Jim" -> 555, "Daniel" -> 789)
println(phonebook) // Map(Jim -> 555, Daniel -> 789)
val filteredMap = phonebook.filterKeys(_.startsWith("J"))
println(filteredMap("Jim")) // 555
println(filteredMap) // MapView(<not computed>)
如果我将filteredMap 定义如下
val filteredMap = phonebook.view.filterKeys(_.startsWith("J"))
那么什么都没有改变。 Scala 版本是2.13.2
为什么无法打印地图视图,最好的解决方法是什么?
【问题讨论】:
-
因为 Views 是惰性集合,旨在用作优化。修复它的最简单方法是强制视图进入严格映射:
phonebook.view.filterKeys(_.startsWith("J")).toMap -
只需执行 .toMap 即可,正如@LuisMiguelMejíaSuárez 提到的那样,您将能够看到