2016-07-28 3 views
1
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 

for 루프로 변경된 __index 메타 메서드에 "par"를 전달하려고합니다. 내가 이것을 달성 할 수있는 방법이 있습니까?__index에서 추가 매개 변수를 전달하면 루아

답변

2

아니요, __index 메타 메서드는 table, key 매개 변수만을 허용합니다. See PiL for details.

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 
관련 문제