* クロージャを使ったイテレータの実装 [#r7b384f1]

 <?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; })) {
     if ($v === false) break;
 while (($v = $it(function ($v) { return $v * 10; })) !== false) {
     print "$v\n";
 }

 10
 20
 30
 40
 50

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS