2017-06-03 1 views
1

Je me demandais juste pourquoi cela renvoyait le Mexique et non l'Angleterre? J'ai essayé de séparer x1 à x6 par leurs propriétés, comme continent, mais je n'ai pas fait beaucoup de progrès.Quelqu'un en sait beaucoup sur les tables, les classes et les fonctions de lua?

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) 

Répondre

4

Dans le contexte de new, self est le métatable, et o est l'objet. La définition des attributs sur self écrase les valeurs précédentes. Donc, changer

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

à

o.continent= continent or "" 
o.country = country or ""