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)