Scala 当我使用Seq[T]构造函数时,创建了什么具体的数据类型?
Scala允许我使用以下语法直接实例化一个实现Scala 当我使用Seq[T]构造函数时,创建了什么具体的数据类型?,scala,collections,traits,seq,Scala,Collections,Traits,Seq,Scala允许我使用以下语法直接实例化一个实现Seq特征的对象: val numbers: Seq[Int] = Seq(1, 2, 3) val names: Seq[String] = Seq("Alice", "Bob", "Charles") 既然Seq是一种特性,而不是具体的实现,那么数字和名称的基础数据类型是什么 我能自己解决这个问题的最好办法是什么 直接创建trait对象是否惯用 谢谢 列表是默认实现。您可以在Scala REPL中轻松测试这一点: scala> val n
Seq
特征的对象:
val numbers: Seq[Int] = Seq(1, 2, 3)
val names: Seq[String] = Seq("Alice", "Bob", "Charles")
Seq
是一种特性,而不是具体的实现,那么数字和名称的基础数据类型是什么
谢谢
列表
是默认实现。您可以在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)
至于什么更好(创建
列表
或序列
),我认为这与偏好有关。这两个选项都可用,据我所知,编译器在选择其中一个选项时不会抱怨。我个人总是使用Seq
来表示完整性:答案也可以在Seq
中找到(对象,而不是特征):
此对象提供了一组创建Seq值的操作。Seq的当前默认实现是一个列表
请注意,与其他
Seq
实现相比,使用List
有显著的优点和缺点(例如,列表更新更快,Vector
索引更快)。我通常会在重要的时候使用更具体的类型来说明这一点,否则Seq
更简单。