我开始学习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的一个实例,该实例未被实体化。欲了解更多信息,请阅读伟大的帖子:流与视图与迭代。