Skip to content

Commit 0d2c01d

Browse files
committed
Add tapEach
1 parent 2eaabd0 commit 0d2c01d

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

compat/src/main/scala-2.11_2.12/scala/collection/compat/PackageShared.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ class IteratorExtensionMethods[A](private val self: c.Iterator[A]) extends AnyVa
240240
self.sameElements(that.iterator)
241241
}
242242
def concat[B >: A](that: c.TraversableOnce[B]): c.TraversableOnce[B] = self ++ that
243+
def tapEach[U](f: A => U): c.Iterator[A] = self.map(a => { f(a); a })
243244
}
244245

245246
class TraversableOnceExtensionMethods[A](private val self: c.TraversableOnce[A]) extends AnyVal {
@@ -252,6 +253,8 @@ class TraversableExtensionMethods[A](private val self: c.Traversable[A]) extends
252253

253254
class TraversableLikeExtensionMethods[A, Repr](private val self: c.GenTraversableLike[A, Repr])
254255
extends AnyVal {
256+
def tapEach[U](f: A => U)(implicit bf: CanBuildFrom[Repr, A, Repr]): Repr =
257+
self.map(a => { f(a); a })
255258

256259
def groupMap[K, B, That](key: A => K)(f: A => B)(
257260
implicit bf: CanBuildFrom[Repr, B, That]): Map[K, That] = {

compat/src/test/scala/test/scala/collection/CollectionTest.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,15 @@ class CollectionTest {
9595
.groupMapReduce(_.length)(_ => 1)(_ + _)
9696
assertEquals(Map(3 -> 3, 4 -> 1), res)
9797
}
98+
99+
@Test
100+
def tapEach(): Unit = {
101+
var count = 0
102+
val it = Iterator(1, 2, 3).tapEach(count += _)
103+
assertEquals(0, count)
104+
it.foreach(_ => ())
105+
assertEquals(6, count)
106+
List(1, 2, 3).tapEach(count += _)
107+
assertEquals(12, count)
108+
}
98109
}

0 commit comments

Comments
 (0)