scala - 为什么Scala将Seq转换为List?

标签 scala

> 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/

相关文章:

scala - IntelliJ 12 : Showing Play 2. 1/项目导航器中的 Scala 编译错误?

scala - 适合使用 Futures 和 Promises 进行延迟初始化吗?

scala - Play 上的代码覆盖率!项目

java - Appengine 性能问题。从 appspot 访问同一个站点比从我的域访问快 10 倍

java - 其他库的 Scalaz 类型类实例汇总

java - Scala 等价于 Java java.lang.Class<T> Object

scala - 如何使用 Scala(spark) 逐行读取文本文件并使用分隔符拆分并将值存储在各个列中?

Scala 命名和默认参数以及隐式参数

scala - Play/Scala/ future : Chained Requests

scala - 内存中相同值的列表/元组