テーブル内のすべてのインデックスが1つ上の位置にシフトされるように、メタテーブルを作成しようとしています(つまり、t[i]
を返す必要がありt[i+1]
ます)。テーブルは最初の要素としてインデックス1を使用して定義されているため、これを行う必要がありますが、最初の要素としてインデックス0を使用するプログラムとインターフェイスする必要があります。Luaでプログラミングを読んで以来、プロキシテーブルでやりたいことは達成できると思いますが、うまく機能していないようです。これまでのところ、私はこれを持っています:
t = {"foo", "bar"}
local _t = t
t = {}
local mt = {
__index = function(t, i)
return _t[i+1]
end
}
setmetatable(t, mt)
ただし、これでは期待した結果は得られません。実際、値はまったく返されません(すべてのルックアップはnil
)。これを行うためのより良い方法はありますか、それとも私は何かが足りないだけですか?