我有:
val having: Option[String] = ...
val averageStream = having match {
case Some(expr) => stream[TimeMovingAverage].filter("name = '#name'").where(expr)
case None => stream[TimeMovingAverage].filter("name = '#name'")
}
是否有一些 scalaz 魔法可以消除重复?
我可以做类似的事情
val averageStream1 = stream[TimeMovingAverage].filter("name = '#name'")
val averageStream2 = having.map(averageStream1.where(_))
但这似乎有点尴尬。我想我正在寻找类似的东西
val averageStream = stream[TimeMovingAverage].filter("name = '#name'") |?| having.cata(_.where(_), _)
// Clearly some ambiguities with the _'s here