#TIL #elixirlang 자기 자신을 alias하는 것 같은 alias MODULE 컨벤션
간단한 예제 코드를 먼저 보자. 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