Lua(標準のinterprteter)でエラーが発生し、問題の原因を見つけることができません。Java、C#などの言語の列挙型に似たものを作成しようとしています。列挙型標準を定義する必要がある現在のコードは次のとおりです。
enum = {
new = function (self, ...)
local o = {};
setmetatable(o, self);
self.__index = self;
for k,v in args do -- THIS LINE IS GIVING THE ERROR
self[v] = 2^k;
end
table.sort(self, function(a,b) if a>b then return true; else return false; end end)
return o;
end,
sum = function (self, ...)
local s
for k,v in args do
s = s+self[v];
end
end,
expand = function (self, number)
indices = {};
for k,v in ipairs(self) do
if v < number then
table.append(k);
number = number-v;
end
end
return unpack(indices);
end
}
エラーは、new
関数のループステートメント(その中のステートメントではありません)に表示されます。これの原因は何でしょうか?私は値を「呼び出す」のではなく、単にそれらを参照するだけです。また、に置き換え2^k
てみmath.pow(2,k)
たので、数学でもありません。次のコードを実行して、スクリプトをテストします。
myEnum = enum:new("a","b","c");
エラーは単にタイトルに何があるかを示しており、変数名などは何も示していないことに注意してください。