【问题标题】:<not computed> on collection output in Scala<未计算> Scala 中的集合输出
【发布时间】:2020-08-16 11:51:20
【问题描述】:

当我尝试打印 MapView 时,我收到了一条消息 MapView(&lt;not computed&gt;)

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 提到的那样,您将能够看到

标签: scala scala-collections


【解决方案1】:

添加.toMap 将您的mapView 转换为静态地图。正如 @Luis Miguel Mejía Suárez 建议的那样

val filteredMap = phonebook.view.filterKeys(_.startsWith("J")).toMap

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2018-02-16
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多