我的团队目前正在与 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 中设置它?
最佳答案
您可以使用提供默认值的条件来初始化变量,而不是使用 if/else 语句。
function apples(taste, num)
taste = taste or "yum"
amount = num or 0
-- ...
end
Lua 的
or
操作符计算并返回它的第一个操作数,除非它是 nil
或 false
,否则它计算并返回它的第二个操作数。这导致了上述默认值的习惯用法。
关于lua 重载 : possibilities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17732990/