传递__index metamethed中的附加参数,Lua

时间:2016-07-28 20:01:35

标签: lua

local T = {}
local m = {}
m.__index = function(self, i, par) -- here "par"
   self[i] = setmetatable({},{__index = function() return (par) end}) -- return "par"
   return self[i]
end

setmetatable(T,m)

for par=1, 3 do
   for j=1, 3 do
      for k=1, j do
         T[j][k] = T[j][k](par) -- pass "par" to __index metamethod
      end
   end
end

我正在尝试将“par”传递给由for循环更改的__index元方法。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:2)

不,__index元方法只接受table, key个参数。 See PiL for details

答案 1 :(得分:0)

在__index元方法中没有通过par是可行的。

local t = {}
local m = {}
m.__index = function(self, i)
    self[i] = setmetatable({}, {__index = function() return function(r,k) return r*k end end})
    return self[i]
end

setmetatable(t,m)

print(t[1][1](12, 12)) -- passing "12, 12" returns "12*12", 144