scala - 理解 scala 中的地图、平面图和选项
问题描述
在以下情况下,我试图了解如何在 scala 中使用函数式编程概念(map、flatmap、filter ..)。基本上我正在尝试过滤 Inner1id
并在此处阅读value
。out
如果我有对对象的引用,请问如何阅读 v(value)
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)
解决方案
寻找这样的东西?
out.inner1
.flatMap {
_.withFilter(_.id == "id").flatMap {
_.inner2.flatMap {
_.v
}
}.headOption
}
//println gives `Some(value)`
如果要提取 Option 值,.getOrElse("")
最后可以使用
推荐阅读
- c++ - 下标 C++ unordered_map 导致没有匹配的构造函数来初始化“坐标”错误
- python - 在pycharm中调试时,如何仅通过for循环的某个迭代进行调试?
- java - 如果用户输入了无效的代码怎么打码呢?
- c# - 如何更改请求正文中的参数名称?
- css - 我在网站上的按钮在 Android 上看起来与在 PC 上不同。如何改变这个?
- angular - 角表多输入文本框显示相同的值
- javascript - 如何将对象推送到具有这种结构的数组?
- javascript - 在选择时更改背景照片
- r - 根据另一列中的唯一值汇总一列中的值
- python - 为大数据部分训练逻辑回归模型