Lua重载:可能性?

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

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

例如:

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 中有更好的设置方式吗?

点赞
用户798888
用户798888

你可以在变量初始化时提供一个条件来设定默认值,而不是使用 if/else 语句。

function apples(taste, num)
  taste = taste or "yum"
  amount = num or 0
  -- ...
end

Lua 的 or 运算符会评估并返回第一个操作数,除非它为 nilfalse,否则它会评估并返回第二个操作数。这就导致了上面提到的默认值惯用法。

2013-07-18 20:15:18