クロージャを使ったイテレータの実装<?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 |
|