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元方法。有没有办法实现这个目标?
答案 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