すべてのリストが空の場合、maxは存在しない可能性がありますので、結果をOption[Int]
としてモデル化できます。一般的なユースケースであるので、あなたは、代わりreduceOption
を使用することができますアドホックコンビネータがあります空でないかのように、
val max: Option[Int] = List(l1, l2, l3, l4).flatten match {
case Nil => None
case list => Some(list.max)
}
List
上で操作を実行する:ここで
はそれを行うための簡単な方法ですあなたはワンライナーに興味があれば、あなたが行うことができます
:ジャンLogeartの答えによって提案
val max: Option[Int] = List(l1, l2, l3, l4).flatten.reduceOption(_ max _)
が、私は私は個人的に読むのが簡単だと思うので、最初の(もっと冗長な)解決策を好むでしょう。
デフォルトの結果を持ちたい代わり場合、あなたはデフォルトで始まる平坦化List
を超える折ることができます。
val max: Int = List(l1, l2, l3, l4).flatten.foldLeft(0)(_ max _) // 0 or any default
または代わりに、ちょうどあなたの元の溶液に0を付加
val max = (0 :: l1 ++ l2 ++ l3).max
@GabrielePetronella私の質問が更新されました。リストが空の場合は、エラーが発生します。 –