成对打印值问题? Lua

Values printing in pairs issue? Lua

不知道为什么好像回归的国家都是成对回归的?您如何更改代码,使其仅 returns 'Europe' 中的国家/地区一次?

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")

我不确定你想用这段代码完成什么,但回答你的问题:

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

此代码将只打印一次欧洲国家。当那里有循环时,它打印了两次国家名称,因为它为 object table 的每个元素都打印了(continentcountry,因此两次) .

Generic for loops in Programming in Lua(第一版)。

我还想指出 list 目前毫无用处。它不会被退回并留在本地。除此之外,每次调用 newcountry 时都会创建 new list。它们都是唯一的 - 国家/地区对象 添加到单个列表中。但同样 - 我不知道你想要完成什么。