2016-07-28 15 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で追加パラメータを渡して、Lua

答えて

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 
関連する問題