2017-06-04 1 views
1

Pour une raison quelconque, les pays qui semblent être retournés retournent tous par paires? Comment pouvez-vous changer le code pour qu'il ne renvoie les pays en Europe qu'une seule fois?Valeurs d'impression par paires? Lua

function newcountry(continent,country) 
    local object = {} 
    object.continent = continent 
    object.country = country 

    local list = {} 

    for i in pairs(object) do 
    if object.continent == "Europe" then 
    table.insert(list, object.country) 
    print(object.country) 

    end 
end 

    return object 
end 


a = newcountry("Africa","Algeria") 
b = newcountry("Europe","England") 
c = newcountry("Europe","France") 
d = newcountry("Europe","Spain") 
e = newcountry("Asia","China") 

Répondre

1

Je ne suis pas sûr de ce que vous essayez d'accomplir avec ce code, mais pour répondre à votre question:

function newcountry(continent,country) 
    local object = {} 
    object.continent = continent 
    object.country = country 
    local list = {} 
    if object.continent == "Europe" then 
     table.insert(list, object.country) 
     print(object.country) 
    end 
    return object 
end 

Ce code imprimera pays en Europe une seule fois. Quand il y avait boucle là-dedans, il a imprimé le nom du pays deux fois, parce qu'il l'a fait pour chaque élément du tableau object (continent et country, donc deux fois).

Generic for loops dans programmation en Lua (première édition). Je voudrais également souligner que list est assez inutile pour le moment. Il n'est pas retourné et reste local. En plus de cela, chaque fois que vous appelez newcountry, il y a nouveaulist créé. Ils sont tous uniques - les objets des pays sont et non a été ajouté à la liste de synthèse. Mais encore une fois - je ne sais pas ce que vous essayez d'accomplir.