2014-12-06 3 views
1
function example() 
    help = "no" 
end 

meme = example() 

print(meme.help) 

이 코드는 런타임 오류를 발생시킵니다. 나는 무엇을해야할지 모른다.루아에서 인스턴스 변수를 어떻게 참조합니까?

나는 루아를 가르치려고하고 있는데, 이것은 자바에서 할 수 있다는 것을 알고 있지만, 루아에서 일하도록 할 수는 없다.

+0

http://puu.sh/djClh/1d4312f5cf.png –

+0

코로나 SDK를 사용하여 –

+0

'example()'의 값을 '반환'하지 않았습니다. 내 대답을 참조하십시오. – cybermonkey

답변

0

당신이 달성하려고하는 것을 매우 명확하지 않다, 그러나 귀하의 질문에 당신이 자바의 객체 지향 기능을 에뮬레이트하려는 것 같습니다.

루아에는 클래스가 없으므로 "인스턴스 변수"가 없습니다. 루아 객체 지향 접근법은 흔하지 않으며 자바와 달리 프로토 타입 기반 객체 지향입니다.

-- this is the "instance" 
myobject = {} 
-- this defines a new "instance variable" named `help` 
myobject.help = "this is the help text" 

-- this defines a getter method for the instance 
-- the special name `self` indicates the instance 
function myobject:GetHelp() 
    return self.help 
end 

-- this defines a setter method for the instance 
function myobject:SetHelp(help_text) 
    self.help = help_text 
end 

print(myobject:GetHelp()) 
myobject:SetHelp("new help text") 
print(myobject:GetHelp()) 

당신은 Lua WIKI's page about object oriented programming에있는 링크를 검색 루아에서 객체 지향에 대한 자세한 내용을 발견 할 수 있습니다 : 인스턴스 변수와 메소드를 가진 객체를 만드는

아주 기본적인 접근 방식은 다음과 같다.

+0

너 너무 많이 고마워 나는 심지어 깨닫지 못했다 –

1

귀하는 귀하의 기능으로 복귀하지 않으 셨습니다. 사용하여 코드가 return 에드되고있는로 사용

enter image description here

:

기능 따라서 당신이 nil value 오류가 발생하고, 값이없는 example() 아무것도 반환하지 않는 경우 help.meme이 작동하지 않습니다.

아래의 코드는이 해결됩니다 :이 그대로 변수는 단순히 사용하는 경우에 이것을 사용할 수 있습니다 반환

function example() 
    help = "no" 
end 

example() 

print(help) 
+0

http://puu.sh/djCCK/5eb36e5abe.png 오류를 던지지 않고 nil을 인쇄합니다. –

+0

@JosephFazekas 코드를 수정 했으므로 올바르게 반환됩니다. – cybermonkey

+0

감사합니다. 그러나이 코드를 사용하여 값을 인쇄하기 만하면됩니다. 나는 그것을 바꿀 수 있기를 원한다. @cybermonkey –

관련 문제