# HG changeset patch # User jbe # Date 1408531653 -7200 # Node ID ed7a82f85e6fdada924e48dbec02d92e4f8fde81 # Parent 2fad7f50076bf304cee8dc421866b52495787bb7 Modified filter example in seqlua_ipairs_example.lua: avoid closure creation in for-loop invocation diff -r 2fad7f50076b -r ed7a82f85e6f seqlua_ipairs_example.lua --- a/seqlua_ipairs_example.lua Wed Aug 20 12:23:31 2014 +0200 +++ b/seqlua_ipairs_example.lua Wed Aug 20 12:47:33 2014 +0200 @@ -71,13 +71,13 @@ -- 4 Person #2 -- 5 Person #3 -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 +function create_filter(f) + return coroutine.wrap(function(...) + for i, v in ipairs(...) do f(v) end end) end -function filterfunc(v) +my_filter = create_filter(function(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 filter(filterfunc, {"a", "b", 3, "c"}) do +for v in my_filter, {"a", "b", 3, "c"} do -- no closure is created print(v) end -- prints: