预期在','附近的函数参数

Jac*_*ian 3 lua unit-testing

我有一个像这样定义的类:

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)

当我运行此客户端代码时,我收到一条错误消息

预期在','附近的函数参数

代码是完全可重新编写的.你可以在这里轻松查看.只需复制粘贴并运行它,您将收到此错误消息.我该如何解决?

Pau*_*nko 8

问题是用inst:msginst:callFunc(inst:msg, "Hello again").该:语法是只有一个"呼叫"约定(这就是为什么它需要一个函数参数有),所以不能用于引用的方法.您可以简单地用inst.msg或替换它,MyClass.msg并获得您期望的相同效果,而不会触发错误.