Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么`scala.collection.Iterator`支持`++;`但不是“:+;”?_Scala_Iterator_Scala Collections_Iterable - Fatal编程技术网

为什么`scala.collection.Iterator`支持`++;`但不是“:+;”?

为什么`scala.collection.Iterator`支持`++;`但不是“:+;”?,scala,iterator,scala-collections,iterable,Scala,Iterator,Scala Collections,Iterable,scala.collection.Iterator不支持:+ scala> Set(0, 2, 3).iterator res0: Iterator[Int] = non-empty iterator scala> res0 :+ 1 <console>:13: error: value :+ is not a member of Iterator[Int] res0 :+ 1 ^ 既然这个特性可以直接实现,为什么Scala标准库

scala.collection.Iterator
不支持
:+

scala> Set(0, 2, 3).iterator
res0: Iterator[Int] = non-empty iterator

scala> res0 :+ 1
<console>:13: error: value :+ is not a member of Iterator[Int]
       res0 :+ 1
            ^

既然这个特性可以直接实现,为什么Scala标准库不在迭代器中提供一个
:+
方法呢?

我不确定原因,但是你可以像在迭代器上实现concat一样实现它,但是有点棘手,因为你需要根据方法来追加或预加元素。对不起,我不理解“你需要根据方法追加或预加元素”的含义。我也不知道原因,但你可以自己添加:
隐式类IteratorAdd[a](iter:Iterator[a]){def:+(x:=>a)=iter++迭代器(x)}
scala> res0 ++ Iterator(1)
res2: Iterator[Int] = non-empty iterator

scala> res2.toList
res3: List[Int] = List(0, 2, 3, 1)