2017-05-23 1 views
0

Je ne trouve aucune documentation sur MonoidAggregator. À quoi sert-il?Qu'est-ce que MonoidAggregator dans Algebird

Un exemple de son utilisation:

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

retour forAll un MonoidAggregator.

whould ce soit à peu près le même que le réglage de la préparer retourner le zéro si _Utilisez == false?

Répondre

0

Un MonoidAggregator est juste un agrégateur qui a un Monoid sous-jacent plutôt qu'un Semigroup. Cela signifie que vous pouvez l'appliquer à une séquence vide et ne pas obtenir une exception.

Donc, en gros un aggrégateur monoid est:

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 
}