2017-05-23 31 views
0

我沒有找到關於MonoidAggregator的任何文檔。 這是什麼?什麼是Algebird中的MonoidAggregator

使用它的一個例子:

MultiAggregator(
    ..., 
    Aggregator.forall[T](_.use)).andThenPresent(...) 
    ..., 
) 

FORALL返回MonoidAggregator。

它對子級大致相同,設置準備返回如果_USE ==假

回答

0

MonoidAggregator只是一個具有底層Monoid而非Semigroup的聚合器。這意味着您可以將其應用於空序列並且不會發生異常。

所以,基本上是一個獨異聚合是:

trait Aggregator[A, B, C] { 
    def prepare(a: A): B 
    def semigroup: Semigroup[B] 
    def present(b: B): C 
} 

trait MonoidAggregator[A, B, C] extends Aggregator[A, B, C] { 
    def prepare(a: A): B 
    def monoid: Monoid[B] 
    final def semigroup: Semigroup[B] = monoid 
    def present(b: B): C 
}