我有一个Seq[Object]
,我希望遍历每个对象并检查其布尔属性之一是否为true / false。我尝试使用flatmap
后跟filter
,但它不起作用:
val systemResourcesExpandable = host.systemResources flatMap (.child) filter { childseq =>
for {
child <- childseq;
child.config flatMap (.cpuAllocation) flatMap (_.expandableReservation)
} yield { child }
}
答案 0 :(得分:0)
想象一下,你有以下几点:
case class Stuff(p: Int, b: Boolean = false)
你创建了这些人的名单:
val x = List(Stuff(1), Stuff(2), Stuff(3, true))
现在,如果您想知道其中一个是否b
设置为true
,您只需执行以下操作:
x.exists(_.b)
答案 1 :(得分:0)
假设有如下对象
case class MyObject(intProp: Int, boolProp: Boolean)
和这样的序列
val mySequence = Seq(obj1, obj2, obj3)
然后,您将使用以下逻辑过滤掉boolProp上的错误布尔条件
mySequence.filter(x => x.boolProp)
此操作返回一个只包含boolProp为true的对象的新序列。注意,这不是修改序列,而是返回一个新序列。
答案 2 :(得分:0)
val systemResourcesExpandable : Option[Seq[SystemResources.Child]] = host.systemResources flatMap (_.child) filter { childseq =>
for{
child <- childseq;
expandablereservation <-child.config flatMap (_.cpuAllocation) flatMap (_.expandableReservation)
if (expandablereservation)
} yield {
child
}
}
这是我的代码片段,我是scala的新手。我在这里遇到类型不匹配的错误...说预期是布尔值。孩子有可扩展预留的属性是真的那么只提取那个孩子从孩子的序列