> val a:Seq[Integer] = Seq(3,4)
a: Seq[Integer] = List(3, 4)
如果
Seq
只是一个特征,为什么编译器/REPL接受它,并且它对于许多其他特征甚至抽象类的行为是否如此?
最佳答案
它不会转换任何东西。Seq
是一个特性,您不能真正实例化它,只能将其混合到某个类中。
由于apply
伴随对象的Seq
方法必须返回一些具体的类实例(混合了Seq
特性),因此它返回的List
似乎是一个合理的默认值。
一种可能有用的情况是,当您需要一些Seq
实例,但不关心实现并且没有时间查看类型层次结构时,找到适合的实现Seq
的类。 Seq(3,4)
保证为您提供符合Seq
契约(Contract)的内容。
关于scala - 为什么Scala将Seq转换为List?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085601/