如何连接字符串和数字,并防止Lua将结果转换为字符串?

时间:2019-01-23 06:47:32

标签: lua

总而言之,我想做的是每次程序通过套接字通信收到消息ap时,都访问名为ap[4]的数组(表)的第四个元素。

为了实现这一目标,程序在消息到达后调用一个“获取” char 4并将其转换为数字的函数。

到目前为止,一切都很完美,但是当我尝试在4ap[之间再次连接]数字时,Lua再次将所有内容转换为字符串。我知道这是Lua的典型行为,但我真的找不到解决此问题的方法。

希望您能帮助我。谢谢。

--Have this:
message = "ap[4]"

--Want this:
valueMessage = ap[4]

2 个答案:

答案 0 :(得分:1)

您可以使用ap[4]来执行它,而不是将loadstring转换为数字。

示例:

ap = {[4] = 'Hello World'}
message = "ap[4]"
get_valueMessage = loadstring("return " .. message)

print(get_valueMessage())

使用可变深度的表时,此方法提供了灵活性。 如果您使用深度一致的表Egor Skriptunoff答案是一个更好的解决方案

该表需要是全局的,loadstring函数才能访问它。

关于此方法要记住的一点是,它在执行消息时还为恶意代码提供了注入路径。如果消息中包含表索引(例如函数调用)以外的内容,则可以利用该消息。添加到邮件中的return确实减轻了一些恶作剧。

答案 1 :(得分:1)

name="ap"; idx=4; value=_G[name][idx]