Luaリファレンス 要注意点 ~イタレータ~

イタレータとクロージャ

for i, v in func(a) の挙動

for i, v in func(a)

end

などとした場合、
forは''イタレータを繰り返す道具として、ただ一度「func, a, 制御値(iへの初期値)」を要求し、
func(a, 制御値)を繰り返す。''
例えば、ipairsを以下のように実装した時、

function ipairs (a)
    return iter, a, 0
end

とリストを返すようにしておけば、
最初に、for ... in は iter(a, 0)を呼び出す。
そして、iter(a, 1)、iter(a, 2)と順に繰り返してゆく。


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS