seqlua
view seqlua_c_example_test.lua @ 8:144f0bddee2b
Pass value as argument to __call metamethod
author | jbe |
---|---|
date | Wed Aug 20 04:24:08 2014 +0200 (2014-08-20) |
parents | 47f9b323d68c |
children | 564320bb2862 |
line source
1 require "seqlua_c_example" -- defines function "printcsv"
3 function alphabet()
4 local letter = nil
5 return function()
6 if letter == nil then
7 letter = "a"
8 elseif letter == "z" then
9 return nil
10 else
11 letter = string.char(string.byte(letter) + 1)
12 end
13 return letter
14 end
15 end
17 printcsv{"a", "b", "c"}
18 -- prints:
19 -- a,b,c
21 printcsv(alphabet())
22 -- prints:
23 -- a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
25 printthree(alphabet())
26 -- prints:
27 -- a
28 -- b
29 -- c
31 printthree(setmetatable({v="x"}, {__call=function(t) return t.v end}))
32 -- prints:
33 -- x
34 -- x
35 -- x