为什么`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)