Lua:函数和用户输入?
我正在尝试用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
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}
。基于用户输入访问全局变量-它的漏洞。是的,这是一个更干净的解决方案。你应该缩进你的代码,这让我们更容易阅读。