首页 > 解决方案 > Scala:使用 immutable.Map 不需要导入?

问题描述

我在这里学习 Scala https://scastie.scala-lang.org/iRJ8VOw7TySZ4KQ5qlWkdw

import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.SortedSet
// import scala.collection.immutable.Map // import not required to use immutable.Map

val m = Map((1 -> "a"), (2 -> "bb"))

val r = m.filter(_._1 > 1)

r // Map(2 -> bb): scala.collection.immutable.Map

println(r)

在上面的代码中,r是类型scala.collection.immutable.Map,即使scala.collection.immutable.Map不是导入而是scala.collection.mutable导入。

如果导入scala.collection.immutable.Mapand scala.collection.mutable._,rimmutable.Map. 如果import scala.collection.mutable._,rmutable.Map.

我有点困惑。谁能帮忙解释一下?谢谢

标签: scalascala-collections

解决方案


第一个问题是Map不是import from因为你的语句scale.collection.mutable有问题。import

改变

import scala.collection.mutable

import scala.collection.mutable._

或者

import scala.collection.mutable.Map

并且Map将是mutable.Map

当您同时导入两者时,因为它更具体scale.collection.immutable.Mapscala.collection.mutable._所以获胜。immutable Map所以最具体的import胜利,在平局的情况下,你会得到一个编译器错误。


推荐阅读