oop - 如何在 Lua 中实现面向对象?

标签 oop lua

Lua 没有内置对 OO 的支持,但它允许您自己构建它。您能否分享一些可以实现 OO 的方法?

请为每个答案写一个例子。如果您有更多示例,请发布另一个答案。

最佳答案

为了快速而肮脏的oo实现,我做了类似的事情 -

function newRGB(r,g,b)
  return {
    red=r;
    green=g;
    blue=b;
    name='';
    setName = function(self,name)
      self.name=name;
    end;
    getName = function(self)
      return self.name;
    end;
    tostring = function(self)
      return self.name..' = {'..self.red..','..self.green..','..self.blue..'}'
    end
  }
end

然后可以像 -
blue = newRGB(0,0,255);
blue:setName('blue');

yellow = newRGB(255,255,0);
yellow:setName('yellow');

print(yellow:tostring());
print(blue:tostring());

对于更全功能的方法,我将使用 eemrevnivek 提到的 oo 库。还可以找到一个简单的类函数here这介于图书馆满载和快速肮脏之间。

关于oop - 如何在 Lua 中实现面向对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4799078/

相关文章:

C++ 处理特定的 impl - #ifdef vs 私有(private)继承 vs 标签调度

PHP/OOP 方法覆盖 DRY 方式

android - widget.newButton 显示在模拟器中但不显示在设备上

使用 setfenv 定义 Lua 变量范围

split - Lua 用分号分割字符串

arrays - 如何将已排序的表索引作为字符串返回?

error-handling - Lua 错误处理

actionscript-3 - OOP 中 C 风格结构的替换

oop - TILED 编辑器 - 对象放置可以对齐到对象层中的网格吗?

c++ - 为使用 malloc() 分配的对象数组调用构造函数