【发布时间】:2022-12-09 11:48:54
【问题描述】:
为什么我使用以下代码创建Seq时得到的是List?
scala> val s = Seq[Int]()
s: Seq[Int] = List()
实际上,Seq是一个trait,trait是不能初始化的。幕后的魔法是什么
【问题讨论】:
标签: scala
为什么我使用以下代码创建Seq时得到的是List?
scala> val s = Seq[Int]()
s: Seq[Int] = List()
实际上,Seq是一个trait,trait是不能初始化的。幕后的魔法是什么
【问题讨论】:
标签: scala
Seq 是一个特征,List 是一个(默认)实现。
object Seq extends SeqFactory.Delegate[Seq](List)
// ^^^^
https://github.com/scala/scala/blob/v2.13.10/src/library/scala/collection/immutable/Seq.scala#L39
【讨论】:
您从 Seq 伴随对象调用了 apply。 apply的实现返回了一个List[Int],它是Seq[Int]的一个实例
【讨论】: