2016-06-30 6 views
1

나는 기능의 몇 가지 포함하는 매우 간단한 중첩 테이블 Aurora64.Chat이 (주 Aurora64 클래스가 다른 곳에서 초기화하지만 완전성을 위해 여기에 삽입) :이 함수와 호출에 대한 접근 방식이 잘못 되었습니까?

Aurora64 = {}; 

Aurora64.Chat = { 
    entityId = 0; 
    Init = function() 
     local entity; --Big long table here. 
     if (g_gameRules.class == "InstantAction") then 
      g_gameRules.game:SetTeam(3, entity.id); --Spectator, aka neutral. 
     end 
     entityId = Entity.id; 
     self:LogToSystem("Created chat entity '" .. entity.name .. "' with ID '" .. entity.id .. "'. It is now available for use."); 
    end 

    LogToSystem = function(msg) 
     System.LogAlways("$1[Aurora 64]$2 " .. msg); 
    end 
} 

위의 코드는 다음과 같이 (checked with the Lua Demo을) 실패 :

입력 : 14 '}'(근접하는 '{'선 (3)에서) 'LogToSystem'근처

I 내지 Tr 한 예상 한 LogToSystem 함수 및 사용법을 확인했습니다 (함수를 제거하면 코드가 완벽하게 컴파일됩니다). use of concatenation (사용하지 않았 음)과 관련이 있다고 생각했습니다.

내가 간단한 것을 놓친 것 같지만, checked the documentation on functions과 &의 호출이 제대로 작성된 것 같습니다.

내가 여기서 정확히 무엇을 잘못하고 있습니까?

+0

아마도'self : LogToSystem'은'Aurora64.Chat' 테이블 밖에 있어야할까요? –

+0

루아 테이블에는 익숙하지 않은가? 먼저,'Init'에'LogToSystem'을 포함하려고합니다. 아직 선언되지 않았기 때문에 가능하지 않습니다. 그렇다고하더라도 여러분은 그것을 Global이 아닌 Chat 테이블 자체의 일부로 선언 할 것입니다. 그런 다음'self : LogToSystem'을 선언하려고합니다.'self '는'Chat'자체를 가리키는 일종의 키워드라고 생각할 것입니다. 너 혼란스러워. 이러한 메서드를 호출하는 방법을 설명하고 아마도 당신을 도울 수있을 것입니다. – user6245072

+0

'entityId'와 다른'entity.id'로 무엇을하려고하는지 명확하지 않습니다. – user6245072

답변

1

당신은 LogToSystem 전에 쉼표를 누락하면 (명시 적 매개 변수로 self을 추가하여) 다르게 조금을 정의해야

end, 

    LogToSystem = function(self, msg) 
     System.LogAlways("$1[Aurora 64]$2 " .. msg); 
    end 
} 

그것은에 할당 된 익명 함수와 형태 obj:method을 사용하는 것은 불가능합니다 테이블 필드; function obj:method 문법으로 만 사용할 수 있습니다.

+0

고마워, 나는 그걸로 간단 할 것이라고 생각했다. (루아에서 2 년 동안 붕괴했고 그 이후로 몇 가지를 배웠다. 그래서 내가 어떻게 혼란스러워 졌는지 쉽게 알 수있다.) – cybermonkey

+0

@cybermonkey 내가 잘못하면 몇 가지 다른 실수가 있습니다. 'Init'에서'entityId'를 참조하고'self : LogToSystem'을 사용합니다. 둘 다 그대로 사용할 수 없습니다. 'entityId'를 Aurora64.Chat.entityId로 대체하고'self : LogToSystem'을 사용하려면'Init' 함수는 첫 번째 인수로'self'를 포함해야하며 콜론 연산자를 사용하여 호출해야합니다. – user6245072