我有一个像这样定义的类:
local MyClass = {
_VERSION = 'MyClass 1.0.0'
}
MyClass.__index = MyClass
setmetatable(MyClass, {
__call = function (cls, ...)
return cls.new(...)
end
})
function MyClass.new(prop1)
local self = setmetatable({}, MyClass)
self.prop1 = prop1
return self
end
function MyClass:msg(txt)
self.prop1 = txt
print(self.prop1)
end
function MyClass:callFunc(func, ...)
pcall(func, ...)
end
Run Code Online (Sandbox Code Playgroud)
我的客户端代码可能如下所示:
local inst = MyClass("value 1")
inst:msg("Hello world")
inst:callFunc(inst:msg, "Hello again")
Run Code Online (Sandbox Code Playgroud)
当我运行此客户端代码时,我收到一条错误消息
预期在','附近的函数参数
代码是完全可重新编写的.你可以在这里轻松查看.只需复制粘贴并运行它,您将收到此错误消息.我该如何解决?
问题是用inst:msg在inst:callFunc(inst:msg, "Hello again").该:语法是只有一个"呼叫"约定(这就是为什么它需要一个函数参数有),所以不能用于引用的方法.您可以简单地用inst.msg或替换它,MyClass.msg并获得您期望的相同效果,而不会触发错误.
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |