Scala允许我使用以下语法直接实例化一个实现Seq
特征的对象:
val numbers: Seq[Int] = Seq(1, 2, 3)
val names: Seq[String] = Seq("Alice", "Bob", "Charles")
Seq
是特征而非具体实现,因此哪种数据类型是numbers
和names
的基础?谢谢!
答案 0 :(得分:4)
为了完整性:答案也可以在Seq
中找到(对象,而不是 trait )Scaladocs:
此对象提供一组用于创建Seq值的操作。 Seq的当前默认实现是List。
答案 1 :(得分:3)
List
是默认实现。您可以在Scala REPL中轻松测试:
scala> val numbers: Seq[Int] = Seq(1, 2, 3)
numbers: Seq[Int] = List(1, 2, 3)
scala> val names: Seq[String] = Seq("Alice", "Bob", "Charles")
names: Seq[String] = List(Alice, Bob, Charles)
就什么更好(创建List
或Seq
)而言,我认为这是偏好。这两个选项都可用,据我所知,编译器在选择其中一个时不会抱怨。我个人总是使用Seq
。