Дано:Очистка `случая class` с` Option` ПОЛОГО
case class Foo(a: Option[Int], b: Option[Int], c: Option[Int], d: Option[Int])
Я хотел бы, чтобы только построение Foo
только, если хотя бы один из ее аргументов Some
, то есть не все поля None
.
Было бы совсем немного коды, чтобы написать алгебраический тип данных, а затем сделать подклассы для каждого варианта:
sealed trait Foo
case class HasAOnly(a: Int) extends Foo
case class HasAB(a: Int, b: Int) extends Foo
// etc...
Есть уборщик, то есть меньше коды, способ решения моей проблемы используя shapeless
?