less than 1 minute read

defmodule Ticket do
  @enforce_keys [:origin, :destination, :price]
  defstruct @enforce_keys
end

enforce_keys 모듈 속성(module attributes)에 모두 정의한 다음 defstruct/1 매크로 인자로 넘기면 된다. 예약된 enforce_keys 같은 모듈 속성에 정의된 걸 재사용할 수 있다는 걸 깜빡하곤 한다.

참고 - Enforce all keys in a struct - stackoverflow.com