implicit class EnhancedIterable[A, B[X] <: Iterable[X]](it: B[A]) {
def mapAndFind[B](f: A => B, p: B => Boolean): Option[B] = {
var result: Option[B] = None
for (value <- it if result.isEmpty) {
val r = f(value)
if (p(r))
result = Some(r)
}
result
}
}
implicit class EnhancedIterable[A, B[X] <: Iterable[X]](it: B[A]) {
def mapAndFind[B](f: A => B)(p: B => Boolean): Option[B] = {
var result: Option[B] = None
for (value <- it if result.isEmpty) {
val r = f(value)
if (p(r)) result = Some(r)
}
result
}
}
val names = Seq("Jose", "Chris", "Carlos", "Stephan")
names.mapAndFind(_.length)(_ > 5)