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
これは機能しますが、私には厄介なようです。それを行うためのより良い、またはより良い方法はありますか?