Scala Seq[Int]和List[Int]之间的差异和转换

Scala Seq[Int]和List[Int]之间的差异和转换,scala,functional-programming,type-conversion,containers,scala-collections,Scala,Functional Programming,Type Conversion,Containers,Scala Collections,当我在REPL中输入Seq(1,2,3)时,它返回我List(1,2,3) 因此,我认为List(1,2,3)可能是List[Int]类型。我试图为分配给Seq(1,2,3)的变量指定类型,但出乎意料的是,REPL抱怨如下: scala> val a:List[Int]=Seq(1,2,3) <console>:20: error: type mismatch; found : Seq[Int] required: List[Int] val a:List

当我在REPL中输入
Seq(1,2,3)
时,它返回我
List(1,2,3)

因此,我认为
List(1,2,3)
可能是
List[Int]
类型。我试图为分配给
Seq(1,2,3)
的变量指定类型,但出乎意料的是,REPL抱怨如下:

scala> val a:List[Int]=Seq(1,2,3)
<console>:20: error: type mismatch;
 found   : Seq[Int]
 required: List[Int]
       val a:List[Int]=Seq(1,2,3)
scala>vala:List[Int]=Seq(1,2,3)
:20:错误:类型不匹配;
找到:Seq[Int]
必需:列表[Int]
val a:列表[Int]=序号(1,2,3)
有人知道什么是
Seq[Int]=List(1,2,3)
的意思吗?它不应该意味着
Seq(1,2,3)
返回一个列表吗?
Seq[Int]
List[Int]
之间有什么区别? 如何在
Seq
List
之间转换?

是序列的基本特征(接口),是该接口的具体实现

List
的每个实例都已经是一个
Seq
,因此不需要转换任何内容。您可以使用
toSeq
方法,但我看不出有任何理由这样做。
要将
Seq
转换为
列表
请使用
toList
方法。

是否可能重复@StuartLC是的,但它没有提到如何从
Seq
转换为
List
List
转换为
Seq
。这仍然令人困惑,即
Seq
可以实例化(或有一个生成器),但挖掘列表的实现差异并不简单。实例化一个
Seq
会产生一个
列表(至少在REPL中)。请求
Seq
与请求“一辆车”具有相同的含义。任何汽车。工厂给你买了一辆漂亮的丰田车——在我们的例子中是
List
。您的请求是通用的,响应是特定的。如果你想直接向丰田索取-明确地建立一个
列表
scala> val a:List[Int]=Seq(1,2,3)
<console>:20: error: type mismatch;
 found   : Seq[Int]
 required: List[Int]
       val a:List[Int]=Seq(1,2,3)