Lua重载:可能性?

5

我的团队目前正在使用Lua创建一个安卓游戏。我们遇到的一个问题是似乎无法创建重载构造函数。

我习惯于使用默认值设置对象,然后在需要时进行重载。

例如:

apples()
{
    taste="yum";
    amount = 0;

}

apples(string taste, int num)
{
    taste=taste;
    amount=num;

}

然而,由于无法做到这一点,我们需要进行初始化的大量 if/else 分支,看起来像这样。
if velX ~= nil then
    self.velX = velX
else
    self.velX = 0
end

if velY ~= nil then
    self.velY = velY
else
    self.velY = 0
end

有没有更好的方法在Lua中设置这个?

表构造器可能会有所帮助:http://www.lua.org/pil/3.6.html - Robert Harvey
Lua不是一种面向对象的语言。 - dualed
1
Lua是一种面向对象编程语言,如果你想的话。http://www.lua.org/pil/16.1.html - tprk77
1个回答

15

你可以使用带有条件的初始化来为变量提供默认值,而不是使用if/else语句。

function apples(taste, num)
  taste = taste or "yum"
  amount = num or 0
  -- ...
end
Lua的or运算符会计算并返回其第一个操作数,除非它是nilfalse,否则它会计算并返回其第二个操作数。这就导致了上述用于默认值的习语。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接