# HG changeset patch # User jbe # Date 1408532273 -7200 # Node ID eb40d8ea7b9a8f5fb1e08aaabf20476ab12a32ed # Parent ed7a82f85e6fdada924e48dbec02d92e4f8fde81 Undo previous commit (doesn't work more than once) diff -r ed7a82f85e6f -r eb40d8ea7b9a seqlua_ipairs_example.lua --- a/seqlua_ipairs_example.lua Wed Aug 20 12:47:33 2014 +0200 +++ b/seqlua_ipairs_example.lua Wed Aug 20 12:57:53 2014 +0200 @@ -71,13 +71,13 @@ -- 4 Person #2 -- 5 Person #3 -function create_filter(f) - return coroutine.wrap(function(...) - for i, v in ipairs(...) do f(v) end +function filter(f, iter, iter_s, iter_i) + return coroutine.wrap(function() + for i, v in ipairs(iter, iter_s, iter_i) do f(v) end end) end -my_filter = create_filter(function(v) +function filterfunc(v) local type_v = type(v) if type_v == "string" then coroutine.yield(v) @@ -86,9 +86,9 @@ coroutine.yield(true) end end -end) +end -for v in my_filter, {"a", "b", 3, "c"} do -- no closure is created +for v in filter(filterfunc, {"a", "b", 3, "c"}) do print(v) end -- prints: