less than 1 minute read

간단한 예제 코드를 먼저 보자. alias __MODULE__ 명령문(statement)은 어떤 걸 하는 걸까?

defmodule IslandsEngine.Coordinate do
  alias __MODULE__

  defstruct [:row, :col]

  def new(row, col) do
    %Coordinate{row: row, col: col} # <-- 1
  end
end

MODULE 매크로는 현재 scope의 모듈 이름을 리턴한다. alias IslandsEngine.Coordinate 코드와 같다. IslandsEngine.Coordinate 별칭으로 Coordinate 이름을 사용하게 하는 코드다.

alias __MODULE__ 명령문은 제일 오른쪽 이름만 편하게 사용하려고 쓰는 관습(convention)이다. 만약 안 쓴다면 1번 코드를 아래와 같이 바꿔야 한다.

def new(row, col) do
  %IslandsEngine.Coordinate{row: row, col: col}
end