gpt4 book ai didi

arrays - 在 2D Lua 表中查看越界

转载 作者:行者123 更新时间:2023-12-02 04:40:14 35 4
gpt4 key购买 nike

我有时会用 Lua 制作小游戏,并且经常需要将 2D 数组实现为网格或棋盘。当我想检查特定单元格周围的单元格时,我通常为 2D 数组提供一个元表,以便在对 grid[outOfBoundsNum] 建立索引时,它返回一个空表而不是错误:

setmetatable(grid, {
__index =
function(t, key)
if not table[key] then
return {}
else
return table[key]
end
end})

因此,当调用grid[outOfBoundsNum][anything]时,它返回nil。然后,为了检查周围的细胞,我做了这样的事情:

for k, v in ipairs(neighbours) do
local cell = grid[v[1][v[2]]
if cell then -- check if this is actually within the 2D array
if cell == 1 then
-- do something
elseif cell == 2 then
-- do something else
...
end
end

这可行,但对我来说似乎很尴尬。有更好的方法吗?

最佳答案

您不需要元表。

for k, v in ipairs(neighbours) do
local cell = grid[v[1]] and grid[v[1]][v[2]]

if cell == 1 then
-- do something
elseif cell == 2 then
-- do something else
...
end
end

应该完成这项工作。在表达式中使用逻辑 andor 是一种相对常见的 lua 习惯用法,就像 C 中的三元运算符一样。所以这一行相当于:

local cell = nil
if grid[v[1]]~=nil then
cell = grid[v[1]][v[2]]
end

关于arrays - 在 2D Lua 表中查看越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15684018/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com