如何重定向 LUA 中的所有类调用?
好吧,我对此不太擅长,所以我将首先给出一个简单的例子来解释:
假设我有一个“类”,让其命名为 MyClass
,假设它有一个名为 的函数MyFunction,我们可以通过从任何
MyClass
对象(例如 MyClassObject:MyFunction()
)调用该函数来访问它。
如果我无权访问该函数,并且想要添加预先执行的新行为,我可以执行以下操作:
MyClass.OriginalMyFunction = MyClass.MyFunction -- store old function
function MyClass:MyFunction(args)
--Do something beforehand
MyClass:OriginalMyFunction(args) --call original function with same args
end
这只是一个简单的示例,但我需要对类中的所有可能函数执行相同的操作。就像调用 MyClassObject
上的任何函数一样,应该在执行该函数之前执行一些代码。
这可能吗?如果是这样,我该怎么做?
Ok i'm kinda bad at this so i'll explain by giving a simple example first:
Say i have a "class", lets name it MyClass
, lets say it has a function named MyFunction
, we can access this by calling the function from any MyClass
objects like MyClassObject:MyFunction()
.
If i didn't have access to that function, and wanted to add a new behaviour that executes beforehand, i can do something like:
MyClass.OriginalMyFunction = MyClass.MyFunction -- store old function
function MyClass:MyFunction(args)
--Do something beforehand
MyClass:OriginalMyFunction(args) --call original function with same args
end
This was just a simple example, but what i need is doing the same for all possible functions in a class. As in calling any functions on MyClassObject
should execute some code before executing that function.
Is this possible? If so, how do i do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个继承示例,其中一些代码添加到所有函数中:
结果:
here is an inheritance example where some code is added to all your functions:
result:
它可以通过元表来完成,
有点粗略的例子:
it can be done via metatables
somewhat crude example: