Scala Seq[Int]和List[Int]之间的差异和转换
当我在REPL中输入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
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)