2016-07-12 10 views
1

Ich versuche, ein übergeordnetes Objekt unter Verwendung seiner Kennung zu indizieren, aber es gibt nil anstelle des Objekts zurück, so dass es einen Fehler beim Ausführen des Skripts auslöst.Wie übergeordnetes Objekt in Lua?

local mapit = { 
    ... 
    ground = function(x, y, w, h, data) 
     ... 
     local id = 0 
     -- mapit is nil in this block 
     for i = 0, #mapit.data.ids do 
      if id ~= i then 
       id = id + 1 
      end 
     end 
     ... 
    end, 
    data = { 
     ids = {} 
    } 
    ... 
} 

local myRect = mapit.ground(400, 100, 600, 100) 

Antwort

3

In Lua, Einheimische sind in ihrem Umfang nicht auf der rechten Hand ihrer initializer, so dass Ihr Verschluß auf einen statt mapit namens global verweist.

Deklarieren Sie zuerst das lokale und weisen Sie es dann zu.

local mapit 
mapit = { ... }