String Lua从字符串到动作?
我刚刚做了一个家庭作业来创建一个lua菜单,它尽可能小,并且尽可能友好 目前它有32行长,使用方式如下:String Lua从字符串到动作?,string,lua,action,String,Lua,Action,我刚刚做了一个家庭作业来创建一个lua菜单,它尽可能小,并且尽可能友好 目前它有32行长,使用方式如下: menu_name = "Mahi's Lua Menu Template v1" menu_items = { "Move menu to left", "Move menu to right", "Reset menu position", "Exit menu" } function use(item) if item==1 then menup
menu_name = "Mahi's Lua Menu Template v1"
menu_items = {
"Move menu to left",
"Move menu to right",
"Reset menu position",
"Exit menu"
}
function use(item)
if item==1 then menupos=menupos-1
elseif item==2 then menupos=menupos+1
elseif item==3 then menupos=3
elseif item==4 then quit=true end
end
我想将函数use()替换为
menu_actions = {
"menupos=menupos-1",
"menupos=menupos+1",
"menupos=3",
"quit=true"
}
但现在的问题是,当这些动作是字符串时,我不能使用它们。有什么方法可以“删除”引号吗
我已经为此自定义了使用功能:
function use()
for i=1,#menu_actions do
if i==selection then
toaction(menu_actions[i])
end
end
end
当然,没有像“toaction”这样的命令,但这就是我要寻找的,是可能做到这一点,还是我必须坚持使用当前使用的函数
编辑:我刚刚意识到,可以通过将文本从menu_actions表写入一个.lua文件,然后删除引号,然后运行lua文件,并在menu关闭后删除它来完成。。。但这太慢了,还有更好的主意吗
Edit2:已解决
function toaction(s)
if _G[s]==nil then _G[s]=loadstring(s) end
_G[s]()
end
谢谢,这很有效D
但是再一次,我可以用loadstring()替换整个toaction()
但是谢谢,我不知道有一个名为loadstring>的函数,请尝试以下操作:
function toaction(s)
if _G[s]==nil then _G[s]=loadstring(s) end
_G[s]()
end
试试这个:
function toaction(s)
if _G[s]==nil then _G[s]=loadstring(s) end
_G[s]()
end
不,您不能用
loadstring
替换toaction
,因为loadstring
不执行代码,它只转换为函数。另外请注意,我的toaction
缓存了转换,因此它只执行一次。是的,它将转换为代码,然后在它之后添加额外()并加载函数……不,您不能将toaction
替换为loadstring
,因为loadstring
不执行代码,它只转换为函数。还要注意,我的toaction
缓存了转换,因此它只执行一次。是的,它将转换为代码,然后在其后面添加额外()并加载函数。。。