Skip to content

Commit e2b45fa

Browse files
committed
add minOption, maxOption, minByOption and maxByOption
1 parent d33acda commit e2b45fa

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,34 @@ class IteratorExtensionMethods[A](private val self: c.Iterator[A]) extends AnyVa
256256

257257
class TraversableOnceExtensionMethods[A](private val self: c.TraversableOnce[A]) extends AnyVal {
258258
def iterator: Iterator[A] = self.toIterator
259+
260+
def minOption[B >: A](implicit ord: Ordering[B]): Option[A] = {
261+
if (self.isEmpty)
262+
None
263+
else
264+
Some(self.min(ord))
265+
}
266+
267+
def maxOption[B >: A](implicit ord: Ordering[B]): Option[A] = {
268+
if (self.isEmpty)
269+
None
270+
else
271+
Some(self.max(ord))
272+
}
273+
274+
def minByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A] = {
275+
if (self.isEmpty)
276+
None
277+
else
278+
Some(self.minBy(f)(cmp))
279+
}
280+
281+
def maxByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A] = {
282+
if (self.isEmpty)
283+
None
284+
else
285+
Some(self.maxBy(f)(cmp))
286+
}
259287
}
260288

261289
class TraversableExtensionMethods[A](private val self: c.Traversable[A]) extends AnyVal {

0 commit comments

Comments
 (0)