如何通过方法名称调用 Lua 方法

有一个名为client的对象,其中包含许多方法,这些方法可以像client:hget(key, field)client:exists(key)这样调用。

现在,我需要实现一个函数client_holder.call(cmd, ...)

local client = client_instance;
function call(cmd, ...)
    client[cmd](client, ...) // 这样可以吗??
end
点赞
用户90511
用户90511

是的,那应该可以。正如 Lua 手册所述,冒号符号只是一种语法糖:

形式

functioncall ::= prefixexp ‘:’ Name args

可以用于调用“方法”。调用 v:name(args) 就是 v.name(v,args) 的语法糖,除了 v 只被评估一次。

2013-03-14 05:39:51