我有一個業務規則列表,並且多個規則可以應用於給定的輸入。如何在Seq上進行過濾[部分功能]
type Input = …
type Output = …
type Rule = PartialFunction[Input, Output]
我想編寫計算所有有效輸出的方法。我想出了這個實現:
def applyRules(i: Input, rules: Seq[Rule]) : Seq[Output] = {
rules.flatMap(_.lift.apply(i))
}
有沒有更好的方法?
是的,我就是這麼做的。作爲選項,您不需要拼寫出'apply' btw: 'rules.flatMap(_。lift(i))' – Dima
'rules.flatMap(Seq(i).collect(_))'' rules.flatMap(Some(i).collect(_))'(儘管我不喜歡'CanBuildFrom'魔術) –