more elegant way to write if( list.nonEmpty) Some(list.max) else None?

functional-programming, max, scala, scala-option

Solution

You can convert a Try into an Option:

Try(empty.max).toOption

You can also use reduceOption (as given in scala - Min/max with Option[T] for possibly empty Seq?):

l.reduceOption(_ max _)

Problem

`List.max` returns the "largest" element of a list based on some ordering... But if the list is empty you'll get a `java.lang.UnsupportedOperationException: empty.max` exception. I don't really like littering code with if statements or matches or whatever. I want something like `headOption` for `max`, but I'm not seeing such a method. What's the most elegant way to get the equivalent of `list.maxOption`?

Original source

Related problems