私はモジュールがSilent
とDefiner
であるとしましょう。その属性に基づいて、Silent
の2つの関数を定義したいと思います。私に説明してみましょう:エリキシルに属性に基づいて関数を定義する方法は?
defmodule Silent do
@function_names [:a, :b, :c]
use Definer
end
defmodule Definer do
defmacro __using__(_) do
quote do
Enum.each(@function_names, fn(n) ->
def unquote(n)() do # line 5
IO.puts "a new method is here!"
end
end)
end
end
end
しかし、私はundefined function n/0 on line 5
を持っているので、このアプローチは、実際には動作しません。どのようにして目的の機能を実装できますか?
私はこのユースケースが何であるか知りたいです。あなたは何らかの貧しい人のインターフェースをしようとしていますか?もしそうなら、Elixirのプロトコルを見てください。http://elixir-lang.org/getting-started/protocols.html –