github.com/hirochachacha/plua@v0.0.0-20170217012138-c82f520cc725/stdlib/base/testdata/pairs.lua (about) 1 f, t, k = pairs({a = 1, b =2}) 2 assert(k == nil) 3 k, v = f(t, k) 4 if v == 1 then 5 assert(k == "a") 6 elseif v == 2 then 7 assert(k == "b") 8 else 9 assert(false) 10 end 11 k, v = f(t, k) 12 if v == 1 then 13 assert(k == "a") 14 elseif v == 2 then 15 assert(k == "b") 16 else 17 assert(false) 18 end 19 k, v = f(t, k) 20 assert(k == nil and v == nil) 21 22 local t = setmetatable({}, {__pairs = function(t) 23 return function(t, k) 24 if k == nil then 25 return 1, 2 26 end 27 if k < 3 then 28 return k+1, k+2 29 end 30 end, t, nil 31 end}) 32 33 f, t, k = pairs(t) 34 assert(k == nil) 35 k, v = f(t, k) 36 assert(k == 1 and v == 2) 37 k, v = f(t, k) 38 assert(k == 2 and v == 3) 39 k, v = f(t, k) 40 assert(k == 3 and v == 4)