总而言之,我想做的是每次程序通过套接字通信收到消息ap
时,都访问名为ap[4]
的数组(表)的第四个元素。
为了实现这一目标,程序在消息到达后调用一个“获取” char 4
并将其转换为数字的函数。
到目前为止,一切都很完美,但是当我尝试在4
和ap[
之间再次连接]
数字时,Lua再次将所有内容转换为字符串。我知道这是Lua的典型行为,但我真的找不到解决此问题的方法。
希望您能帮助我。谢谢。
--Have this:
message = "ap[4]"
--Want this:
valueMessage = ap[4]
答案 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]