在Lua中使用变量中的字符串值进行字符串拼接。

我有这样的函数:

MapMSH(Msg.MSH, b)
MapPID(Msg.PID, b)
MapPV1(Msg.PV1,b)

现在,我有另一个函数,我将在其中调用上述三个函数,我有一个变量 u 循环遍历值 MSHPIDPV1。 我知道我需要使用 .. 运算符来连接字符串。

我真正想要的是将 u 中的值连接到 Map 中,类似于

"Map"..u(Msg.u, b)

这样,一旦 u 中的值匹配,我的函数就会自动调用。 使用上面的语法,它说 "Map" 附近出现了意外的符号。 请问有人能告诉我确切的语法吗?

点赞
用户1474999
用户1474999

如果您的函数在全局命名空间中,请尝试以下操作。

funcList = {"MSH","PID","PV1"}

for _,u in pairs(funcList) do
    _G["Map"..u](Msg[u],"X")
end

测试

Msg = { MSH="MSH", PID="PID", PV1="PV1" }
function MapMSH(a, b)
    print( a..b )
end
function MapPID(a, b)
    print( a..b )
end
function MapPV1(a, b)
    print( a..b )
end

输出

MSHX
PIDX
PV1X

您的问题非常类似于 此问题

2014-02-07 10:52:24