1
我需要一個組合器,該組合器在成功時運行副作用並在ValidationNel
上返回錯誤。在ValidationNel上運行一個副作用並返回錯誤
這是我第一次嘗試:
def runSideEffectAndReturnErrors[E, A](v: ValidationNel[E, A], f: A => Unit) : Seq[E] = v match {
case Failure(errors) => errors.list
case Success(a) =>
f(a)
Seq.empty[E]
}
這裏是第二個。它在運行時可能會有額外的成本,但是我發現它更具可讀性並且可以利用現有的組合器。
def runSideEffectAndReturnErrors[E, A](v: ValidationNel[E, A], f: A => Unit) : Seq[E] = {
v.foreach(f)
v.fold(_.list, _ => Seq.empty[E])
}
您怎麼看?有沒有更好的辦法 ?