나는 때때로 Lua에서 작은 게임을 만들고, 그리드 나 보드로 2D 배열을 구현해야한다. grid[outOfBoundsNum][anything]
가 호출 될 때 그래서2D Lua 테이블에서 한계를 보아라.
setmetatable(grid, {
__index =
function(t, key)
if not table[key] then
return {}
else
return table[key]
end
end})
: 나는 특정 셀 주변의 세포를 검사 할 때 그리드 [outOfBoundsNum] 대신 오류의 빈 테이블을 반환 색인 때 그래서 나는 보통 2 차원 배열을 메타 테이블을 제공 이면 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
이 방법은 효과가 있지만 어색한 것으로 보입니다. 더 좋은 방법이 있습니까?
왜''{{X1, Y1을 포함 neighbours' 않습니다 : 그것은 그래서이 줄에 해당하는 비교적 흔한 루아 관용구는 C. 에서 삼항 연산자처럼 행동 식 논리
and
및or
을 사용하는 것입니다 }, {x2, y2}, ...}'{cell1, cell2, ...}'가 아닌가? – Eric이유가 없습니다, 단지 예일뿐입니다. 내가 쓰는 모듈은 실제로 두 번째 메소드 {cell1, cell2, ...}를 사용합니다. –