为什么这个列表总是抓取第一项?
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
这个函数应该遍历所有个列表项,并检查参数坐标是否接近列表项中的位置(列表中的第二个和第三个数字嵌套列表),但从读数中我可以看出它只检查第一个。
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