Skip to content

Commit 0144844

Browse files
authored
Merge pull request #291 from NthPortal/topic/tapeach/PR
Add tapEach
2 parents 4fe9531 + c8776b7 commit 0144844

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-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
@@ -233,6 +233,7 @@ class IteratorExtensionMethods[A](private val self: c.Iterator[A]) extends AnyVa
233233
self.sameElements(that.iterator)
234234
}
235235
def concat[B >: A](that: c.TraversableOnce[B]): c.TraversableOnce[B] = self ++ that
236+
def tapEach[U](f: A => U): c.Iterator[A] = self.map(a => { f(a); a })
236237
}
237238

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

246247
class TraversableLikeExtensionMethods[A, Repr](private val self: c.GenTraversableLike[A, Repr])
247248
extends AnyVal {
249+
def tapEach[U](f: A => U)(implicit bf: CanBuildFrom[Repr, A, Repr]): Repr =
250+
self.map(a => { f(a); a })
248251

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

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,19 @@ 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+
val stream = Stream(1, 2, 3).tapEach(count += _)
109+
assertEquals(13, count)
110+
stream.force
111+
assertEquals(18, count)
112+
}
98113
}

0 commit comments

Comments
 (0)