Пример #1
0
 public function testConverge()
 {
     $add = function ($a, $b) {
         return $a + $b;
     };
     $multiply = function ($a, $b) {
         return $a * $b;
     };
     $subtract = function ($a, $b) {
         return $a - $b;
     };
     $conv1 = P::converge($multiply, [$add, $subtract]);
     $this->assertEquals(-3, $conv1(1, 2));
     $add3 = function ($a, $b, $c) {
         return $a + $b + $c;
     };
     $conv2 = P::converge($add3, [$multiply, $add, $subtract]);
     $this->assertEquals(4, $conv2(1, 2));
     $a = function () use($add, $subtract) {
         (yield $add);
         (yield $subtract);
     };
     $conv1 = P::converge($multiply, $a());
     $this->assertEquals(-3, $conv1(1, 2));
 }