示例#1
0
 public static function reduce($coll, TransformerInterface $xf, $init)
 {
     $result = $init;
     foreach ($coll as $key => $value) {
         $result = $xf->step($result, new Pair([$key, $value]));
         if (Transducers::isReduced($result)) {
             $result = Transducers::deref($result);
             break;
         }
     }
     return $xf->result($result);
 }
示例#2
0
 public static function reduceArray($coll, TransformerInterface $xf, $init)
 {
     $result = array_reduce($coll, function ($result, $input) use($xf) {
         if (Transducers::isReduced($result)) {
             return $result;
         }
         return $xf->step($result, $input);
     }, $init);
     if (Transducers::isReduced($result)) {
         $result = Transducers::deref($result);
     }
     return $xf->result($result);
 }
示例#3
0
 public static function reduce($coll, TransformerInterface $xf, $init)
 {
     $result = $init;
     while (!feof($coll)) {
         $item = fgets($coll, 8196);
         $result = $xf->step($result, $item);
         if (Transducers::isReduced($result)) {
             $result = Transducers::deref($result);
             break;
         }
     }
     return $xf->result($result);
 }
示例#4
0
 public static function reduce($coll, TransformerInterface $xf, $init)
 {
     $result = $init;
     $length = strlen($coll);
     for ($i = 0; $i < $length; $i += 1) {
         $result = $xf->step($result, $coll[$i]);
         if (Transducers::isReduced($result)) {
             $result = Transducers::deref($result);
             break;
         }
     }
     return $xf->result($result);
 }