クロージャを使ったイテレータの実装 <?php
function getIterator($vars) {
$i = 0;
$n = sizeof($vars);
return function ($func) use ($vars, &$i, $n) {
if ($i < $n) {
return $func($vars[$i++]);
}
return false;
};
}
$it = getIterator(array(1,2,3,4,5));
while (($v = $it(function ($v) { return $v * 10; })) !== false) {
print "$v\n";
}
10 20 30 40 50 |
|