Я пытаюсь понять, как использовать концепции функционального программирования (map, flatmap, filter ..) в scala в следующем случае.В основном я пытаюсь отфильтровать Inner1 с id
и прочитать value
здесь.Не могли бы вы, пожалуйста, как я могу прочитать v (значение), если у меня есть ссылка на out
объект
final case class Inner2(v:Option[String])
final case class Inner1(id: String,inner2: Seq[Inner2])
final case class Out(inner1: Option[Seq[Inner1]])
val inner2 = Inner2(Some("value"))
val inner11 = Inner1("id",List(inner2))
val inner12 = Inner1("id2",List())
val out = Out(Some(List(inner11,inner12)))
Я знаю, что следующий код не является правильным, но я поместил его здесь, чтобы показать, что пытается бытьсделано.
out.inner1
.flatMap(_.headOption)
.filter(_.id=="id")
.map(_.inner2)
.flatMap(_.headOption)
.flatMap(_.v)