2017-06-03 2 views
1

Ich habe mich nur gefragt, warum das Mexiko nicht England zurückgegeben? Ich habe versucht, x1 nach x6 durch ihre Eigenschaften zu trennen, wie Kontinent, aber ich habe keine großen Fortschritte gemacht.Wer weiß viel über Lua-Tabellen, Klassen und Funktionen?

world = {continent = "", country = ""} 


function world:new (o,continent,country) 
    o = o or {} 
    setmetatable(o, self) 
    self.__index = self 
    self.continent= continent or "" 
    self.country = country or ""; 
    return o 
end 


x1 = world:new(nil,"Europe","England") 
x2 = world:new(nil,"Europe","France") 
x3 = world:new(nil,"Africa","Algeria") 
x4 = world:new(nil,"Africa","Nigera") 
x5 = world:new(nil,"America","United States") 
x6 = world:new(nil,"America","Mexico") 

list_1 = {x1,x2,x3,x4,x5,x6} 

print(list_1[1].country) 

Antwort

4

Im Rahmen der new ist self die Metatabelle, und o ist das Objekt. Das Setzen von Attributen auf self überschreibt die vorherigen Werte. So ändern

self.continent= continent or "" 
self.country = country or "" 

zu

o.continent= continent or "" 
o.country = country or "" 
Verwandte Themen