val scoreSeq_opition: Seq[Option[String]] = List(Some("ngksf"),Some("fmgfdmg"),Some("mbmd"),None)
val nullOrdering: Ordering[Option[String]] = ????
I would like to sort by Ordering[Option[String]] if the above code. In that case, unlike the standard, we want None to be listed after Some, and Option[String] should be in the normal sort order for String. Last time we sorted strings in Score, but this time we are simply sorting strings of strings.
CodePudding user response:
For Option[String]
it looks like this:
implicit val ord: Ordering[Option[String]] =
Ordering.by(x => (x.isEmpty, x.getOrElse("")))
I am presuming that Score
is just a type alias for Option[String]
otherwise you need to create an Ordering[Score]
with the appropriate rules. In that case the ordering can be in the companion object where the compiler will find it if it needs it.