메타 테이블을 사용하여 lua의 기본 클래스에서 인스턴스를 만들 수 없습니다.

스티븐 호

저는 현재 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항상 동일한 테이블을 참조합니다. 즉, /에 접근을 수정하는 것이 테이블의 printOutsetValue.

콜론 표기법을 사용하면 두 함수 모두 암시 적 self매개 변수가 있습니다. class(예 : print(self.value)self.value = value) 대신 사용하십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Activator.CreateInstance를 사용하여 COM 클래스의 인스턴스를 만들 수 없습니다.

분류에서Dev

인터페이스를 준수하고 기본 클래스의 메서드도 인식하는 모의 객체를 만들 수 있습니까?

분류에서Dev

Java에서 클래스의 여러 인스턴스를 만들 수 없습니다.

분류에서Dev

Koin은 게시 된 라이브러리에서 클래스의 인스턴스를 만들 수 없습니다.

분류에서Dev

Codeigniter에서 클래스의 인스턴스를 만들 수 없습니다.

분류에서Dev

기본 클래스에서 인스턴스를 만들고 타이핑 유지

분류에서Dev

정적 메서드에서 클래스 수준 잠금을 만들고 한 스레드가 실행하면 동일한 클래스의 다른 인스턴스 메서드를 실행하는 다른 스레드를 차단합니까?

분류에서Dev

하스켈에서 어떻게 튜플을이 클래스의 인스턴스로 만들 수 있습니까?

분류에서Dev

VBA를 사용하여 특정 기준의 행만 포함하는 다른 테이블의 데이터에서 새 테이블을 만들 수 있습니다.

분류에서Dev

디자이너에서 "[사용자 컨트롤]"오류의 인스턴스를 만들 수 없습니다.

분류에서Dev

디자이너에서 "[사용자 컨트롤]"오류의 인스턴스를 만들 수 없습니다.

분류에서Dev

Spark Scala의 케이스 클래스를 사용하여 텍스트 파일에서 데이터 프레임을 만들 수 없습니다.

분류에서Dev

기본 클래스의 인스턴스를 사용하여 파생 데이터 클래스를 초기화 할 수 있습니까?

분류에서Dev

클래스의 여러 인스턴스를 만들 수 없습니까?

분류에서Dev

SQLAlchemy를 사용하여 Flask에서 테이블을 만들 수 없습니다.

분류에서Dev

Java를 사용하여 MySQL에서 테이블을 만들 수 없습니다.

분류에서Dev

Java를 사용하여 MySQL에서 테이블을 만들 수 없습니다.

분류에서Dev

GNU C ++는 상수 사용자 정의 클래스 인스턴스의 벡터를 만들 수 없습니다.

분류에서Dev

WCF Silverlight 서비스에서 추상 클래스 또는 인터페이스의 인스턴스를 만들 수 없습니다.

분류에서Dev

제네릭 메서드에서 형식 인수로 사용중인 클래스의 기본 클래스 속성에 액세스 할 수 없습니다.

분류에서Dev

추상 클래스 또는 인터페이스 'System.Array'의 인스턴스를 만들 수 없습니다.

분류에서Dev

C # ASP.NET-다른 클래스의 메서드를 사용하여 레이블 만들기

분류에서Dev

Moshi를 사용하여 Retrofit에서 클래스 용 @Body 변환기를 만들 수 없습니다.

분류에서Dev

Scala에서 Typeclasses를 사용하여 타사 클래스 java.io.Serializable을 만들 수 있습니까?

분류에서Dev

OSGI 번들에서 클래스의 인스턴스를 입력받을 수 없습니다

분류에서Dev

인터페이스의 인스턴스를 만들 수 없습니다. IPagedList

분류에서Dev

.NET 콘솔 앱에서 CRM 2016 Online 인스턴스에 연결하기 위해 IOrganizationService의 인스턴스를 만들 수 없습니다.

분류에서Dev

systemverilog에서 $ cast를 사용하여 기본 클래스에서 파생 클래스의 메서드에 액세스 할 수 있습니까?

분류에서Dev

gtest에서 단위 테스트를 위해 내 클래스의 개인 멤버 개체의 기능을 대체하기 위해 모의 클래스 / 개체를 만들 수 없습니다.

Related 관련 기사

  1. 1

    Activator.CreateInstance를 사용하여 COM 클래스의 인스턴스를 만들 수 없습니다.

  2. 2

    인터페이스를 준수하고 기본 클래스의 메서드도 인식하는 모의 객체를 만들 수 있습니까?

  3. 3

    Java에서 클래스의 여러 인스턴스를 만들 수 없습니다.

  4. 4

    Koin은 게시 된 라이브러리에서 클래스의 인스턴스를 만들 수 없습니다.

  5. 5

    Codeigniter에서 클래스의 인스턴스를 만들 수 없습니다.

  6. 6

    기본 클래스에서 인스턴스를 만들고 타이핑 유지

  7. 7

    정적 메서드에서 클래스 수준 잠금을 만들고 한 스레드가 실행하면 동일한 클래스의 다른 인스턴스 메서드를 실행하는 다른 스레드를 차단합니까?

  8. 8

    하스켈에서 어떻게 튜플을이 클래스의 인스턴스로 만들 수 있습니까?

  9. 9

    VBA를 사용하여 특정 기준의 행만 포함하는 다른 테이블의 데이터에서 새 테이블을 만들 수 있습니다.

  10. 10

    디자이너에서 "[사용자 컨트롤]"오류의 인스턴스를 만들 수 없습니다.

  11. 11

    디자이너에서 "[사용자 컨트롤]"오류의 인스턴스를 만들 수 없습니다.

  12. 12

    Spark Scala의 케이스 클래스를 사용하여 텍스트 파일에서 데이터 프레임을 만들 수 없습니다.

  13. 13

    기본 클래스의 인스턴스를 사용하여 파생 데이터 클래스를 초기화 할 수 있습니까?

  14. 14

    클래스의 여러 인스턴스를 만들 수 없습니까?

  15. 15

    SQLAlchemy를 사용하여 Flask에서 테이블을 만들 수 없습니다.

  16. 16

    Java를 사용하여 MySQL에서 테이블을 만들 수 없습니다.

  17. 17

    Java를 사용하여 MySQL에서 테이블을 만들 수 없습니다.

  18. 18

    GNU C ++는 상수 사용자 정의 클래스 인스턴스의 벡터를 만들 수 없습니다.

  19. 19

    WCF Silverlight 서비스에서 추상 클래스 또는 인터페이스의 인스턴스를 만들 수 없습니다.

  20. 20

    제네릭 메서드에서 형식 인수로 사용중인 클래스의 기본 클래스 속성에 액세스 할 수 없습니다.

  21. 21

    추상 클래스 또는 인터페이스 'System.Array'의 인스턴스를 만들 수 없습니다.

  22. 22

    C # ASP.NET-다른 클래스의 메서드를 사용하여 레이블 만들기

  23. 23

    Moshi를 사용하여 Retrofit에서 클래스 용 @Body 변환기를 만들 수 없습니다.

  24. 24

    Scala에서 Typeclasses를 사용하여 타사 클래스 java.io.Serializable을 만들 수 있습니까?

  25. 25

    OSGI 번들에서 클래스의 인스턴스를 입력받을 수 없습니다

  26. 26

    인터페이스의 인스턴스를 만들 수 없습니다. IPagedList

  27. 27

    .NET 콘솔 앱에서 CRM 2016 Online 인스턴스에 연결하기 위해 IOrganizationService의 인스턴스를 만들 수 없습니다.

  28. 28

    systemverilog에서 $ cast를 사용하여 기본 클래스에서 파생 클래스의 메서드에 액세스 할 수 있습니까?

  29. 29

    gtest에서 단위 테스트를 위해 내 클래스의 개인 멤버 개체의 기능을 대체하기 위해 모의 클래스 / 개체를 만들 수 없습니다.

뜨겁다태그

보관