如何解决我该如何使用lua中的变量呢?
我怎样才能使2张“印刷品”正确?
代码:
Config = {}
Config.option1.general = true
Config.option2.general = false
print(Config.option1.general)
print('Config.'..'option1'..'.general')
输出:
true
Config.option1.general
请原谅我的无知
解决方法
第一张印刷品是收集变量,并因此显示该变量的值
第二张照片已经正在收集STRING 。字符串是一组字符,它们仅表示文本,因此将显示文本
例如,假设我们有一个变量test = true
如果执行print(test)
,将显示变量的值,即true
。现在,如果您得到print("test")
,则""
表示我们在谈论文本“测试”,而不是变量test
,因此将显示test
而不是{ {1}}。
请注意,在第二张图中,使用了两个点true
,这称为CONCATENATION,即当我们将两个或多个字符串(即两个或多个文本合并为一个字符串)时
由于这个原因,您无法在第二张照片上打印..
,因为您要收集的是变量名而不是变量本身的STRING
目标是创建一个函数,您可以为其提供选项,并使用相应列表的变量执行代码。
只需创建一个将选项字符串作为输入的函数,然后使用该字符串作为Config
表中的键:
function getOption (opt)
return Config[opt].general
end
然后您可以根据需要使用返回值:
> getOption('option1')
true
> print(getOption('option1'))
true
> if (getOption('option1')) then print 'Yay!' else print 'Aw...' end
Yay!
如果您想过着危险的生活,可以使用load
从字符串中运行代码块。但是,将此功能与用户输入配合使用会带来安全问题。
只需编写一个函数,该函数采用指定选项的字符串,然后使用该输入来构成表示块的字符串。 load
函数返回一个以块为主体的函数,因此您需要调用该返回的函数以从块中获取结果:
function getOption (opt)
local cmd = 'Config.' .. opt .. '.general'
return load('return ' .. cmd)()
end
使用getOption('option1')
,cmd
字符串变为'Config.option1.general'
,并将其与'return '
串联以创建块'return Config.option1.general'
,该块将传递给{{1 }}。语句load
调用load('return Config.option1.general')()
返回的函数,返回的值再次从load
函数返回。
示例互动:
getOption
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。