为什么我不能在 Scala 中将 Map 变量分配给 AbstractSeq 变量?

Why can't I assign a Map variable to an AbstractSeq variable in Scala?

我想声明一个 AbstractSeq[(String, Integer)] 类型的变量,它将存储一个对列表。然后根据程序流程,我可能会分配一个 ArrayBuffer[(String, Integer)] 给它,或者一个 Map[String, Integer]:

val map: Map[String, Integer] = Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
var lst: AbstractSeq[(String, Integer)] = List.empty
...
lst = map # compile error

但是我得到以下错误:

found   : scala.collection.immutable.Map[String,Integer]
required: scala.collection.immutable.AbstractSeq[(String, Integer)]

我的问题: 为什么会出现此错误? Map 不是成对的 AbstractSeq,因此我应该能够做到这一点吗?

我试过的方法:我用谷歌搜索了这个错误和相关的关键字,但没有找到我的问题的答案。

我问的原因: 我想了解 Scala 中不同 Collection 类型之间的关系。哪些集合类型可以分配给哪些类型的变量,为什么?

因为 Map[K, +V] 不是 AbstractSeq:

trait Map[K, +V] extends Iterable[(K, V)] with collection.Map[K, V] with MapOps[K, V, Map, Map[K, V]] with MapFactoryDefaults[K, V, Map, Iterable]

文档有 collection overview 可以阐明不同集合类型之间的某种关系。