lua超载:可能性?

Dre*_*ano 4 lua overloading init

我的小组目前正在与Lua合作,创建一款安卓游戏.我们遇到的一件事是无法创建重载构造函数.

我习惯于使用默认值设置对象,然后在需要时会过载.

例如:

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

}

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

}
Run Code Online (Sandbox Code Playgroud)

但是,由于无法做到这一点,我们将这些lare 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
Run Code Online (Sandbox Code Playgroud)

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

WuT*_*Tan 13

您可以使用提供默认值的条件初始化变量,而不是使用if/else语句.

function apples(taste, num)
  taste = taste or "yum"
  amount = num or 0
  -- ...
end
Run Code Online (Sandbox Code Playgroud)

Lua的or运算符计算并返回其第一个操作数,除非它是nil或者false,否则它将计算并返回其第二个操作数.这导致了上述默认值的习语.