У меня есть эти структуры данных с классом case в опции и полем, заключенным в опцию:
case class Name(value: Option[String]) extends AnyVal
case class Data(id: Int, name: Option[Name], isDefault: Boolean)
Так что я бы хотел обработать случаи, когда есть некоторые для Name,То же самое касается верхнего варианта. Но когда для Имени есть None, я бы хотел получить None
вместо Some(Name(None))
. Я попытался сделать что-то вроде этого:
def handleNestedOptions(value: Option[String]): Option[Name] = {
value match {
case Some(data) => Some(Name(Some(data)))
case None => None
}
}
Но я также хотел бы иметь его в общем виде, чтобы он мог работать для любого класса дел той же структуры, что и у меня. Итак, как я могу изменить эту реализацию, чтобы сделать ее более общей? Под общим я имею в виду что-то вроде этого: def handleNestedOptions[T, K](value: Option[K]): Option[T]