我需要创建一个序列,其中有条件地添加元素但不能使用for -> yield
,因为必须在迭代完成之前执行某个清理任务。例如,请考虑以下代码段。
sequence.flatMap( msg => {
val (_, value) = msg
val returnVal = BaseData(value) match {
case Some(baseData) =>
//some processing
//will return some value here
Seq("")
case None => //Do nothing skip this
Nil //Don't want to add anything here.
}
if(!sequence.hasNext){
//cleanup
}
returnVal
}
然而,考虑到我必须每次为单个对象创建一个序列,这似乎非常难看。是否有更好的功能性方法来实现这一目标。我的输出总是必须在我的示例中返回Seq[R]
R=String
。