コルーチン

上記のメモした記事で、コルーチンでジェネレータを作成する場合に、coroutine.create()が使用されていて、使うときに、coroutine.resume()が使用されていたが、coroutine.wrap()を使用した方がもっと簡単に出来る。何故、coroutine.create()などを使用しているのだろうか?

function make_array_gen(ary)
  return function()
    for i=1, #ary do
      coroutine.yield(ary[i])
    end
  end
end
for v in coroutine.wrap(make_array_gen({1,2,3})) do
  print(v)
end
-- 実行結果
1
2
3