Scala 与++;用于连接列表
可能重复:Scala 与++;用于连接列表,scala,Scala,可能重复: 在Scala中,假设我有两个列表 scala> val oneTwo = List(1,2) oneTwo: List[Int] = List(1, 2) 及 我可以通过执行以下操作来连接列表: scala> oneTwo ::: threeFour res30: List[Int] = List(1, 2, 3, 4) 或 这两种方法的区别是什么 谢谢。来自文档: :[B>:A](前缀:List[B]):List[B] ++[B>:A](即:Iterable[B]
在Scala中,假设我有两个列表
scala> val oneTwo = List(1,2)
oneTwo: List[Int] = List(1, 2)
及
我可以通过执行以下操作来连接列表:
scala> oneTwo ::: threeFour
res30: List[Int] = List(1, 2, 3, 4)
或
这两种方法的区别是什么
谢谢。来自文档:
:[B>:A](前缀:List[B]):List[B]
++[B>:A](即:Iterable[B]):列表[B]
您可以看到++
适用于任何Iterable
,而:
专门用于列表
scala> val oneTwo = List(1,2)
oneTwo: List[Int] = List(1, 2)
scala> val threeFour = List(3,4)
threeFour: List[Int] = List(3, 4)
scala> val fiveSix = Array(5,6)
fiveSix: Array[Int] = Array(5, 6)
scala> oneTwo ++ fiveSix
res2: List[Int] = List(1, 2, 5, 6)
scala> oneTwo ::: fiveSix
<console>:10: error: value ::: is not a member of Array[Int]
oneTwo ::: fiveSix
scala>val oneTwo=List(1,2)
oneTwo:List[Int]=List(1,2)
scala>val threeFour=列表(3,4)
three-four:List[Int]=List(3,4)
scala>val fiveSix=数组(5,6)
第五章:数组[Int]=数组(5,6)
scala>oneTwo++fiveSix
res2:List[Int]=List(1,2,5,6)
scala>oneTwo::fiveSix
:10:错误:值:::不是数组[Int]的成员
第二:第五
方法特定于列表
,而++
是任何可遍历
的一部分
区别来自两件事。首先,List
是最初的Scala集合之一,在编译器中大量使用,并经过特殊优化。:
串联与ML语言家族中使用的相同,后者是Scala的灵感来源之一,并且:
从中推断
另一方面,++
伴随着Scala 2.8.0上Scala集合的重新设计而来,这使得方法和继承统一起来。我认为它在那之前就已经存在了(例如,在集),但是集合没有共享一个公共的超类,因此它基本上是其他集合的一种特殊方法
就性能而言,:
应该超过++
,但可能不会太大
scala> oneTwo ++ threeFour
res31: List[Int] = List(1, 2, 3, 4)
scala> val oneTwo = List(1,2)
oneTwo: List[Int] = List(1, 2)
scala> val threeFour = List(3,4)
threeFour: List[Int] = List(3, 4)
scala> val fiveSix = Array(5,6)
fiveSix: Array[Int] = Array(5, 6)
scala> oneTwo ++ fiveSix
res2: List[Int] = List(1, 2, 5, 6)
scala> oneTwo ::: fiveSix
<console>:10: error: value ::: is not a member of Array[Int]
oneTwo ::: fiveSix