Skip to content

Latest commit

 

History

History
29 lines (22 loc) · 559 Bytes

refer-to-a-module-within-itself.md

File metadata and controls

29 lines (22 loc) · 559 Bytes

Refer To A Module Within Itself

Elixir comes with the __MODULE__ reserve word for referencing a module within itself. This is handy for things like structs.

defmodule SomeNamespace.MyModule do
  defstruct [:id]

  def do_thing(%__MODULE__{}=thing) do
    # ...
  end
end

You can use an alias in order to ditch __MODULE__ and perhaps make your code a bit more human readable.

defmodule SomeNamespace.MyModule do
  alias __MODULE__, as: MyModule

  defstruct [:id]

  def do_thing(%MyModule{}=thing) do
    # ...
  end
end