如何向类型/类添加自定义方法?

像标题中所问的那样,假设我想向 table 类型添加自定义方法,比如 table:printContent(),在 Lua 中有没有办法做到这一点?我的意思是,只有纯 Lua。例如,在 C# 中,您可以使用扩展来实现此目的:

using System;
namespace Main {
    public static class Extension {
        public static void printContent(this table mytable) {
            foreach(var content in mytable) {
                Console.WriteLine(content.ToString());
            }
        }
    }
}

现在,在 Lua 中是否也可以做到这一点?

这个问题启发了我(那个问题没有教我想要学习的东西,如果我想要在 Lua 中进行模块化编程,我需要 OOP)

如何向表类型添加方法?

点赞
用户2858170
用户2858170

好的,谢谢,所以不可以用表格,但是可以用类吗?

一个类总是使用 Lua 表来实现。

最小的例子:

MyClass = {}
function MyClass:new(o)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  return o
end

如果想要给 MyClass 添加一个新的方法,只需要实现它即可

function MyClass:MyNewMethod()
end

当然,这种方法也可以用于覆盖现有的方法。

2021-04-05 11:48:29