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

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

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

原文链接 https://stackoverflow.com/questions/71277551

点赞
stackoverflow用户3574628
stackoverflow用户3574628

由于if语句的两个分支都在循环内返回,因此循环永远不能进行第二次迭代。为了基于positions数组的所有元素获取结果,您需要创建一个表来存储它们:

function CapitalProximity(x,y)
  local positions = {{"lusitani",31,328},{"ebdani",78,592},{"carpetani",101,329}}
  local result = {} -- 这里将存储所有结果。
  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 -- 存储当前结果。
  end
  return result
end
2022-02-27 02:46:27