为什么这个列表总是抓取第一项?

Why does this list always grab the first item?

这个函数应该遍历所有个列表项,并检查参数坐标是否接近列表项中的位置(列表中的第二个和第三个数字嵌套列表),但从读数中我可以看出它只检查第一个。

function CapitalProximity(x,y)
  local positions = {{"lusitani",31,328},{"ebdani",78,592},{"carpetani",101,329}}
  for i = 1, #positions do
    local dist = distance_2D(x,y,positions[i][2],positions[i][3])
    print("position is "..dist.." from "..positions[i][1])
    if dist < 20 then
      return true
    else
      return false
    end
  end
end

由于 if return 的两个分支都来自循环内部,因此循环永远无法进行第二次迭代。要根据 positions 数组中的所有元素获取结果,您需要制作一个 table 来存储它们:

function CapitalProximity(x,y)
  local positions = {{"lusitani",31,328},{"ebdani",78,592},{"carpetani",101,329}}
  local result = {} -- This will hold all results.
  for i = 1, #positions do
    local dist = distance_2D(x,y,positions[i][2],positions[i][3])
    print("position is "..dist.." from "..positions[i][1])
    result[i] = dist < 20 -- Store the current result.
  end
  return result
end