示例#1
0
 /**
  * @param int $size
  * @return SequenceInterface<SetInterface<A>>
  */
 function sliding($size)
 {
     if ($size <= 0) {
         throw new \InvalidArgumentException(sprintf('The number must be greater than 0, but got %d.', $size));
     }
     $slices = new Sequence();
     $offset = 0;
     while ($offset < $this->length()) {
         $slices->add($this->createNew(array_slice($this->elements, $offset, $size)));
         $offset += $size;
     }
     return $slices;
 }
示例#2
0
 public function testMap()
 {
     $seq = new Sequence();
     $seq->add('a');
     $seq->add('b');
     $self = $this;
     $newSeq = $seq->map(function ($elem) use($self) {
         switch ($elem) {
             case 'a':
                 return 'c';
             case 'b':
                 return 'd';
             default:
                 $self->fail('Unexpected element: ' . var_export($elem, true));
         }
     });
     $this->assertInstanceOf('Collection\\Sequence', $newSeq);
     $this->assertNotSame($newSeq, $seq);
     $this->assertEquals(['c', 'd'], $newSeq->all());
 }