0
나는 벽이있는 방을 %{{x, y} => [items]}
의지도에 그리려고하고있다. 그리고 나는 그려야하는 벽의 유형을 알아 내기 위해 case 문을 사용하고있다.연금술 문과 패턴 매칭
그러나 패턴 일치를 시도하고 왼쪽의 값에 pos
을 할당하려고 시도합니다. (illegal pattern
컴파일 오류가 발생 함)
^
으로 할당을 막을 수는 있지만,해야 할 일은 무엇입니까? (from_y+sizey)
?
def place_room({from_x, from_y}, {size_x, size_y}, original_map) do
Enum.reduce from_x..(from_x + size_x-1), original_map, fn x, map ->
Enum.reduce from_y..(from_y + size_y-1), map, fn y, map ->
pos = {x, y}
case pos do
{from_x, from_y} ->
place(map, pos, :wall, %{type: :room_wall_tl})
{from_x, (from_y+size_y)} ->
place(map, pos, :wall, %{type: :room_wall_tr})
{from_x, (from_y+size_y)} ->
place(map, pos, :wall, %{type: :room_wall_bl})
{(from_x+size_x), (from_y+size_y)} ->
place(map, pos, :wall, %{type: :room_wall_br})
{_, _} ->
place(map, pos, :floor, %{type: :room_floor})
weird ->
IO.inspect weird
end
end
end
end
어떻게 작성 하시겠습니까?
감사합니다. – hakunin
나는 또한'cond' 기반의 해결책을 추가했다. 나는 당신의 질문에있는 것과 같은 코드를 작성하는 대신에 그것을 사용할 것입니다. – Dogbert
고마워요, 그게 훨씬 나아 보여요! – hakunin