私はエリクシルでプロトコルを定義し、いくつかのモジュールでそれを実装したかったのです。私の問題は、そう、これらのモジュールは、単にエージェントラッパーであるということです。エリクシールでエージェントを使ってプロトコルを実装する
、その後に結果defprotocol Proto do
def foo(proto)
end
defmodule A do
def start_link() do
Agent.start_link(fn -> :a end)
end
end
defimpl Proto, for: A do
def foo(proto) do
Agent.get(proto, fn a -> a end)
end
end
defmodule B do
def start_link() do
Agent.start_link(fn -> :b end)
end
end
defimpl Proto, for: B do
def foo(proto) do
Agent.get(proto, fn b -> b end)
end
end
{:ok, a_pid} = A.start_link()
value = Proto.foo(a_pid)
、
** (Protocol.UndefinedError) protocol Proto not implemented for #PID<0.88.0>
test.exs:1: Proto.impl_for!/1
test.exs:2: Proto.foo/1
(elixir) lib/code.ex:363: Code.require_file/2
が直接これを処理する方法はありますか?
パーフェクト!ありがとうございました。私はエリクシールの世界には新しいので、言語の哲学を理解するのには少しの道のりがあります。 –