SM
Вот тебе код с переопределением
request
, который компилируется:defmodule Common do
@callback request(term) :: term
defmacro __using__(_) do
quote do
@behaviour Common
def get_stat(from, to, opts), do: Common.get_stat(__MODULE__, from, to, opts)
@impl Common
def request(opts), do: opts
defoverridable request: 1
end
end
def get_stat(module, from, to, opts), do: module.request(%{from: from, to: to} |> Map.merge(opts))
end
defmodule A do
use Common
def request(opts), do: super(opts) |> Map.put_new(:keys, Map.keys(opts))
end
defmodule B do
use Common
end