lua 重载 : possibilities?

标签 lua overloading init

我的团队目前正在与 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 操作符计算并返回它的第一个操作数,除非它是 nilfalse ,否则它计算并返回它的第二个操作数。这导致了上述默认值的习惯用法。

关于lua 重载 : possibilities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17732990/

相关文章:

lua - 写入命令成功后 Redis Lua 脚本出错

linux - 无法使用 Alpine 和 Busybox docker 图像运行可执行文件

zend-framework - Zend Framework Bootstrap 问题

iphone - 对于 iPhone OS 4.0 "dateFromString"NSDateFormatter 方法返回 nil

c++ - tolua++:将指针所有权转移到 lua gc

lua - 从服务器接收数据时出错

overloading - 从 Ironpython 调用重载方法

C# 方法重载解析

c++ - 如何在算法中使用带默认参数的重载函数?

objective-c - 在 Objective-C 中,我为什么要检查 self = [super init] 是否不为零?