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:

Impressum / About Us