如何在 lua 中使用 pcall 调用类方法?

Adr*_*nni 2 lua

如何pcall在 Lua 中调用类方法?

我试过了,pcall(instance:method, arg)但没有用。
我也尝试过,pcall(instance.method, instance, arg)但这也不起作用。

我用谷歌搜索了一个解决方案,但我找不到。

一个例子:

local ValueOwnerMap = {}

ValueOwnerMap.__index = ValueOwnerMap

function ValueOwnerMap:create(key_prefix)
    local instance = {}
    setmetatable(instance, ValueOwnerMap)
    instance.key = key_prefix .. ':value-owner-map'
    return instance
end

function ValueOwnerMap:get(value)
    return redis.call('HGET', self.key, value)
end

function ValueOwnerMap:put(value, owner_id)
    return redis.call('HSETNX', self.key, value, owner_id)
end

function ValueOwnerMap:del(value)
    return redis.call('HDEL', self.key, value)
end

local value_owner_map = ValueOwnerMap:create('owner:key')
local success, data = pcall(value_owner_map:put, 'a_value', 'a_owner_id')
Run Code Online (Sandbox Code Playgroud)

lhf*_*lhf 7

instance:method(arg)是糖instance.method(instance,arg)。所以试试

pcall(value_owner_map.put, value_owner_map, 'a_value', 'a_owner_id')
Run Code Online (Sandbox Code Playgroud)