seqlua
changeset 20:ed7a82f85e6f
Modified filter example in seqlua_ipairs_example.lua: avoid closure creation in for-loop invocation
author | jbe |
---|---|
date | Wed Aug 20 12:47:33 2014 +0200 (2014-08-20) |
parents | 2fad7f50076b |
children | eb40d8ea7b9a |
files | seqlua_ipairs_example.lua |
line diff
1.1 --- a/seqlua_ipairs_example.lua Wed Aug 20 12:23:31 2014 +0200 1.2 +++ b/seqlua_ipairs_example.lua Wed Aug 20 12:47:33 2014 +0200 1.3 @@ -71,13 +71,13 @@ 1.4 -- 4 Person #2 1.5 -- 5 Person #3 1.6 1.7 -function filter(f, iter, iter_s, iter_i) 1.8 - return coroutine.wrap(function() 1.9 - for i, v in ipairs(iter, iter_s, iter_i) do f(v) end 1.10 +function create_filter(f) 1.11 + return coroutine.wrap(function(...) 1.12 + for i, v in ipairs(...) do f(v) end 1.13 end) 1.14 end 1.15 1.16 -function filterfunc(v) 1.17 +my_filter = create_filter(function(v) 1.18 local type_v = type(v) 1.19 if type_v == "string" then 1.20 coroutine.yield(v) 1.21 @@ -86,9 +86,9 @@ 1.22 coroutine.yield(true) 1.23 end 1.24 end 1.25 -end 1.26 +end) 1.27 1.28 -for v in filter(filterfunc, {"a", "b", 3, "c"}) do 1.29 +for v in my_filter, {"a", "b", 3, "c"} do -- no closure is created 1.30 print(v) 1.31 end 1.32 -- prints: