Lua:函数和用户输入?

Lua:函数和用户输入?,lua,Lua,我正在尝试用lua编写一个简单的程序,目的是根据用户输入返回具有特定值的字符串,但是我在编写脚本时遇到了问题 例如,如果我编译 person1 = { name = "bob" , age = 70 , hair = "black" , }; person2 = { name = "dan", age = 40 , hair = "blonde" , }; describe = function(parent) print ( "hello " .. parent.name .. " your

我正在尝试用lua编写一个简单的程序,目的是根据用户输入返回具有特定值的字符串,但是我在编写脚本时遇到了问题

例如,如果我编译

person1 = {
name = "bob" ,
age = 70 ,
hair = "black" ,
};
person2 = {
name = "dan",
age = 40 ,
hair = "blonde" , 
};
describe = function(parent)
print ( "hello " .. parent.name .. " your are " .. parent.age .. " years old
and your hair color is " .. parent.hair )
end
print ("who are you") ;
answer = io.read ();
describe (answer) 
我希望,如果我将
person1
作为输入,脚本将返回一个字符串,内容如下:

你好,鲍勃,你70岁了,头发是黑色的

但是,它会返回一个错误


问题是,我能做些什么来解决这个问题?在Lua中使用用户输入的正确方法是什么?

您必须将
对象
传递给函数,而不是名称。或在全局范围内搜索对象:

person1 = {
    name = "bob" ,
    age = 70 ,
    hair = "black" ,
};
person2 = {
    name = "dan",
    age = 40 ,
    hair = "blonde" , 
};
describe = function(parent)
    parent = _G[parent]
    print ( "hello " .. parent.name .. " your are " .. parent.age .. " years old and your hair color is " .. parent.hair )
end
print ("who are you") ;
answer = io.read ();
describe (answer) 

工作示例:

对不起,但是,它做什么?它是全局范围,所有全局变量都存储在这里。检查手册。忘记那些废话。使用类似这样的方法:
localdata={bob={age=70,hair=“black”},dan={age=40,hair=“blonde”};
parent=data[parent]或{age=-1,hair=-1}
。基于用户输入访问全局变量-它的漏洞。是的,这是一个更干净的解决方案。你应该缩进你的代码,这让我们更容易阅读。