0

就像标题中问的那样,假设我想为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 中?

启发我的问题(这个问题并没有告诉我我想学什么,是的,我想要 OOP,如果我想在 Lua 中进行修改)

如何将方法添加到表类型?

4

1 回答 1

1

好的,谢谢,所以它对表格来说是不可以的,但是对于课程可以吗?不是我创建的自定义类(例如,如果我想修改,之前有类,如果我想修改这些类怎么办?我可以使用包装器,但还有其他方法吗?)

一个类总是使用 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-05T11:48:29.550 回答