Beispiel #1
0
 public function testFilter()
 {
     $this->assertEquals([1, 2, 3], filter('is_numeric', ['a', 1, 'b', 2, 'c', 3]));
     $this->assertEquals(array('b' => 2), filter(function ($v) {
         return $v % 2 === 0;
     }, array('a' => 1, 'b' => 2, 'c' => 3)));
     $this->assertEquals([], filter('is_int', []));
     $this->assertEquals([1, 2, 3], call_user_func(filter, 'is_numeric', ['a', 1, 'b', 2, 'c', 3]));
     $this->assertEquals('\\nspl\\f\\filter', filter);
 }
Beispiel #2
0
$userIds = map(propertyGetter('id'), $users);
echo sprintf("User ids are: %s\n", implode(', ', $userIds));
// 2. Count users younger than 25
$youngerThan25Count = reduce(function ($count, $user) {
    return $count + (int) ($user->age < 25);
}, $users);
echo sprintf("%s users are younger than 25\n", $youngerThan25Count);
// 3. Get users younger than 25
$youngerThan25 = filter(function ($user) {
    return $user->age < 25;
}, $users);
echo "These users are younger than 25:\n";
foreach ($youngerThan25 as $user) {
    echo sprintf("    %s - %s y.o.\n", $user->name, $user->age);
}
// 4. Get users older than 25
$isOlderThan25 = compose(rpartial(gt, 25), propertyGetter('age'));
$olderThan25 = filter($isOlderThan25, $users);
echo "These users are older than 25:\n";
foreach ($olderThan25 as $user) {
    echo sprintf("    %s - %s y.o.\n", $user->name, $user->age);
}
// 5. Memoizing heavy calculations
$factorial = function ($n) {
    echo "Calculating {$n}!\n";
    return reduce(mul, range(1, $n), 1);
};
$memoizedFactorial = memoized($factorial);
foreach ([3, 3, 5, 5, 5] as $n) {
    echo sprintf("%s! = %s\n", $n, $memoizedFactorial($n));
}