我正在尝试在Lua中创建一个地址簿。
我目前有3张桌子(作为例子)
Tab1 = {1,2,3}
Tab2 = {John,Mark,Cassie}
Tab3 = {123,456,789}
我希望能够向用户显示名称列表,然后一旦用户点击名称,我想返回相应的值。
E.g。用户选择Mark然后程序将返回 "联系= 2"
" Number = 456"
答案 0 :(得分:2)
首先,除非您在某处为变量指定了值,否则John,Mark和Cassie为nil
。如果你想在表格中有名字,你必须使用字符串。
Tab2 = {"John", "Mark", "Cassie"}
否则您的表格Tab2将为空。
当然,Tab1,Tab2和Tab3不是非常聪明的变量名,因为它们没有提示其内容。 例如,为什么不将它们命名为姓名,号码和联系人?
然后你必须考虑如何在表格之间链接信息。
有很多方法可以做到这一点。
如果我们坚持你的例子,你必须在Tab2中搜索“Mark”,获取索引,然后使用该索引从其他表中获取信息。
local selectedName = "Mark"
for i,v in ipairs(Tab2) do
if v == selectedName then
print("Contact = " .. Tab1[i])
print("Number = " .. Tab3[i])
end
end
当然这不是很好。
获取Mark号码的另一种简单方法是将每个号码存储在一个使用名称作为键的表中。
local numbers = {"John" = 123, "Mark" = 456, "Cassie" = 789}
然后你可以简单地做一些事情:
print(numbers["Mark"])
或者您将所有信息分组。
local contacts = {}
contacts["Mark"] = {hairColour = "blond" ,number = 456}
然后你可以做
print(contacts["Mark"].hairColour)
print(contacts["Mark"].number)
这仍然不是一个好的解决方案。只是为了向您展示一些基本的砖块。
确保您做了一些教程并阅读了一些书籍和Lua参考手册。所以你会知道什么是可能的。
例如,Lua允许模仿可在此处使用的面向对象编程。或者您使用外部库将所有内容放入数据库......
天空是极限。
我无法就“点击”名称给出任何建议,因为本机Lua不支持此功能。您需要库来创建GUI,例如wxLua。
对于一个简单的程序,您可以从控制台应用程序开始,或者只是将用户输入硬编码到脚本中。