我想有一个动态变量名称,并希望能够eval并获取它的值,并想知道这是否可用。关于我如何使用它的示例。
audio.play(eval("readAloudPage"..page_num)))
答案 0 :(得分:2)
如果要求全局变量的值,请尝试_G["readAloudPage"..page_num]
。
或定义
function eval(name)
return _G[name]
end
答案 1 :(得分:2)
动态变量名必须是表字段:名为_G
的globals表,或者如果您不想使用全局变量(通常是这种情况),则为您自己的表。示例:
local yourDynVars = {}
yourDynVars["readAloudPage"..page_num] = ...
audio.play(yourDynVars["readAloudPage"..page_num])
print( yourDynVars.readAloudPage2 ) -- not dynamic; prints nil unless page_num was 2, above
如果您将yourDynVars
表替换为_G
,唯一的区别是在最后一行中您可以直接访问var:
_G["readAloudPage"..page_num] = ...
audio.play(_G["readAloudPage"..page_num])
print( readAloudPage2 ) -- not dynamic; prints nil unless page_num was 2, above
答案 2 :(得分:1)
最接近eval(code)
的Lua将是loadstring(code)()
。
注意loadstring(code)
不执行code
,它会动态创建一个函数。使用loadstring(code)()
创建并运行它。
答案 3 :(得分:1)
您可以获得的最接近的解决方案是使用_G["readAloudPage"..page_num]
。
Lua提供loadstring函数将字符串转换为可执行函数,但在Corona SDK中禁用此功能(并且只能在调试环境中使用/访问)。