Elixir で普通では使えない記号が入った名前の関数を定義する

  • 6
    Like
  • 0
    Comment
More than 1 year has passed since last update.

quote を使うとめちゃくちゃな名前の関数でも定義できる。

fancy.exs
defmodule Fancy do
  defmacro __using__(_) do
    fancy_name = :"!#$%&'()_"
    quote do
      def unquote(fancy_name)() do
        42
      end
    end
  end
end
foo.exs
defmodule Foo do
  use Fancy
end
$ iex -r fancy.exs -r foo.exs
iex> Foo."!#$%&'()_"
42