2016-08-07 42 views
1

我想在lua中做一個簡單的程序,目的是根據用戶輸入返回一個具有某些值的字符串,但是我遇到了腳本編寫問題。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中使用用戶輸入的正確方法是什麼?

+1

你應該縮進你的代碼,它可以更容易閱讀我們。 – pschulz

回答

1

您將不得不通過object函數,而不是名稱。或在全球範圍內搜索對象:

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) 

工作例如:http://ideone.com/UJxnpx

+0

對不起,但是_G做了什麼? – Hecedu

+0

這是全局範圍,所有全局變量都被存儲。查看[基本功能]手冊(http://www.lua.org/manual/5.1/manual.html#5.1)。 – Jakuje

+0

忘掉'_G [parent]'廢話。使用這樣的東西:'本地數據= {bob = {age = 70,hair =「black」},dan = {age = 40,hair =「blonde」};''parent = data [parent] or {age = -1,頭髮= -1}'。根據用戶輸入訪問全局變量 - 其易受攻擊性。 – FareakyGnome