我正在創建一個2d地圖,並希望通過預填充空值來啓動。如何在Elixir的循環中創建地圖
我知道以下不能在Elixir中工作,但這是我想要做的。
def empty_map(size_x, size_y) do
map = %{}
for x <- 1..size_x do
for y <- 1..size_y do
map = Map.put(map, {x, y}, " ")
end
end
end
然後我會繪製形狀到那個地圖一樣
def create_room(map, {from_x, from_y}, {width, height}) do
for x in from_x..(from_x + width) do
for y in from_x..(from_x + width) do
if # first line, or last line, or first col, or last col
map = Map.replace(map, x, y, '#')
else
map = Map.replace(map, x, y, '.')
end
end
end
end
我試圖做一個二維數組,但我認爲與協調touples平面地圖作爲鍵會更容易使用。
我知道我應該使用遞歸,但我並沒有真正理解如何優雅地完成這個場景,並且我還沒有看到一個簡單/通用的方法來實現這一點。
正是我需要的,謝謝!順便說一句,有一種方法來擺脫'end')括號中的位? – hakunin
是的,您可以用'end'替換'reduce('with'reduce'和'end)'。當參數很長時,我更喜歡將它們寫出來,但它們是可選的。 – Dogbert