저는 현재 Defold 프로젝트를 진행 중이며 lua에서 클래스를 구축해야합니다. 이것은 내 기본 클래스입니다.
local class = {}
class.__index = class
class.value = nil
function class.create()
local o ={}
setmetatable(o, class)
return o
end
function class:printOut()
print(class.value)
end
function class:setValue(value)
class.value = value
end
return class
이것은 메인 스크립트에서 내 사용법입니다.
local mclass = require "main.mclass"
local B
local C
function init(self)
msg.post(".", "acquire_input_focus")
msg.post("@render:", "use_fixed_fit_projection", { near = -1, far = 1 })
B = mclass.create()
C = mclass.create()
end
function on_input(self, action_id, action)
if action_id == hash("touch") and action.pressed then
B:setValue(10)
print(B.value)
B:setValue(12)
print(C.value)
--print(B.value)
end
end
각 B와 C에 대해 기본 클래스에서 인스턴스를 생성한다고 가정합니다. 그러나 둘 다 동일한 기본 클래스를 가리키는 것 같습니다. B를 사용하여 값을 변경함에 따라 C의 값도 변경되었습니다. 내가 여기서 뭔가를 놓쳤습니까? 또는 수업 설정이 잘못되었습니다. 도와 주셔서 감사합니다!
mclass 파일에서 class
항상 동일한 테이블을 참조합니다. 즉, /에 접근을 수정하는 것이 테이블의 printOut
과 setValue
.
콜론 표기법을 사용하면 두 함수 모두 암시 적 self
매개 변수가 있습니다. class
(예 : print(self.value)
및 self.value = value
) 대신 사용하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다