현재 내가 사용하는 elixir version은 1.6.5이다.
1.5.0의 changelog에 나오는 내용이므로 1.5.0 이상의 버전에서는 다 적용될 것으로 예상됨.
callback의 구현임을 명시적으로 알려줄 때 "@impl true"를 함수의 앞에 써준다.
sample:
defmodule MyApp do
@behaviour Plug
@impl true
# 이 함수 `init/1`은 문서화에서 제외된다. 암묵적으로 @doc false로 설정된다.
def init(_opts) do
opts
end
@impl true
@doc """
여기 내용은 그대로 문서화에 적용됨
see `Plug.call/2`
"""
def call(conn, _opts) do
Plug.Conn.send_resp(conn, 200, "hello world")
end
end
- callback이 아닌 함수에 @impl 사용하면 에러.
- 어느 하나의 함수에 @impl을 적용했다면 그 모듈 내의 모든 callback에서 @impl을 써주지 않은 함수에 대해 경고.
ref: https://elixir-lang.org/blog/2017/07/25/elixir-v1-5-0-released/
happy hackin'