Scala 中的 MapView(<未计算>)



我开始学习Scala,但我发现map有一个令人困惑的问题。我的代码是这样的:

val mymap = Map(1 -> "james",2 -> "justin")
println(mymap.view.mapValues(x => "hi" + x))
println(mymap.view.mapValues(x => x.toUpperCase))

但结果是

MapView(<not computed>)
MapView(<not computed>)

我使用view.mapValues,因为.map已弃用。有什么建议或医生需要我读一下吗?

尝试以下操作:

val mymap = Map(1 -> "james",2 -> "justin")
println(mymap.view.mapValues(x => "hi" + x).toMap)
println(mymap.view.mapValues(x => x.toUpperCase).toMap)

请注意,在Scala2.12中,调用mapValues返回了一个Map。在Scala 2.13中,mapValues被弃用,消息是:

@deprecated("Use .view.mapValues(f). A future version will include a strict version of this method (for now, .view.mapValues(f).toMap).", "2.13.0")

为了获得Map,您应该致电.view.mapValues(f).toMap。如果不调用toMap,则会得到MapView的一个实例,该实例未被实体化。欲了解更多信息,请阅读伟大的帖子:流与视图与迭代。

最新更新