2016-08-07 8 views
1

나는 사용자 입력을 기반으로 특정 값을 가진 문자열을 반환하는 것을 목표로하는 간단한 프로그램을 만들고자 노력하고있다. 그러나이 스크립트를 작성하는 데 문제가있다. 내가 컴파일하는 경우 예를 들어루아 : 함수 및 사용자 입력?

,

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 세 밥 머리 색깔이 검은 색입니다

그러나 대신 오류가 반환됩니다.

문제는 무엇을 해결할 수 있습니까? 루아에서 사용자 입력을 사용하는 올바른 방법은 무엇입니까?

+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]'쓰레기는 잊어 버리십시오. 다음과 같이 사용하십시오 :'local data = {bob = {age = 70, hair = "black"}, dan = {age = 40, hair = "blonde"};''parent = data [parent] or {age = -1, hair = -1}'. 사용자 입력을 기반으로하는 전역 변수에 대한 액세스 - 취약점. – FareakyGnome