Scala 当我使用Seq[T]构造函数时,创建了什么具体的数据类型?

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

Scala允许我使用以下语法直接实例化一个实现
Seq
特征的对象:

val numbers: Seq[Int] = Seq(1, 2, 3)
val names: Seq[String] = Seq("Alice", "Bob", "Charles")
  • 既然
    Seq
    是一种特性,而不是具体的实现,那么
    数字和
    名称的基础数据类型是什么
  • 我能自己解决这个问题的最好办法是什么
  • 直接创建trait对象是否惯用

  • 谢谢

    列表
    是默认实现。您可以在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
    更简单。