예제 #1
0
 protected function fetchIfValid()
 {
     if ($this->outer->valid()) {
         $outerV = $this->outer->current();
         $outerK = $this->outer->key();
         $compareKey = $this->outerCompareKeySelector->select($outerV, $outerK);
         $inners = $this->lookup->get($compareKey);
         $inners = new GroupingGinq(IteratorUtil::iterator($inners), $compareKey);
         $this->v = $this->resultValueSelector->select($outerV, $inners, $outerK, $compareKey);
         $this->k = $this->outer->key();
     }
 }
예제 #2
0
파일: Ginq.php 프로젝트: gunjiro/ginq
 /**
  * @param callable|array|string       $lookupKeySelector (v, k) -> v
  * @param callable|array|string|null  $elementSelector   (v, k) -> v
  * @param EqualityComparer|null       $eqComparer
  * @return LookupGinq
  */
 public function toLookup($lookupKeySelector, $elementSelector = null, $eqComparer = null)
 {
     $lookupKeySelector = SelectorResolver::resolve($lookupKeySelector, ValueSelector::getInstance());
     $elementSelector = SelectorResolver::resolve($elementSelector, ValueSelector::getInstance());
     $lookup = new LookupGinq(EqualityComparerResolver::resolve($eqComparer, EqualityComparer::getDefault()));
     $it = $this->getIterator();
     foreach ($it as $k => $v) {
         $lookup->put($lookupKeySelector->select($v, $k), $elementSelector->select($v, $k));
     }
     return $lookup;
 }