クロージャを使ったイテレータの実装

<?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

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

Last-modified: 2012-01-23 (月) 20:22:55 (2366d)