Skip to content

Commit f7718aa

Browse files
authored
Merge pull request #534 from ryan-johnson-databricks/Iterator.nextOption
Add Iterator.nextOption
2 parents b856f36 + 68b1746 commit f7718aa

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-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
@@ -348,6 +348,9 @@ class IteratorExtensionMethods[A](private val self: c.Iterator[A]) extends AnyVa
348348
def sameElements[B >: A](that: c.TraversableOnce[B]): Boolean = {
349349
self.sameElements(that.iterator)
350350
}
351+
def nextOption(): Option[A] = {
352+
if (self.hasNext) Some(self.next()) else None
353+
}
351354
def concat[B >: A](that: c.TraversableOnce[B]): c.TraversableOnce[B] = self ++ that
352355
def tapEach[U](f: A => U): c.Iterator[A] = self.map(a => { f(a); a })
353356
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,14 @@ class CollectionTest {
114114
assertEquals((Seq("bar", "baz"), Seq("foo".length, "test".length)), res)
115115
}
116116

117+
@Test
118+
def nextOption(): Unit = {
119+
val it = Iterator(1, 2)
120+
assertEquals(Some(1), it.nextOption())
121+
assertEquals(Some(2), it.nextOption())
122+
assertEquals(None, it.nextOption())
123+
}
124+
117125
@Test
118126
def tapEach(): Unit = {
119127
var count = 0

0 commit comments

Comments
 (0)