我们如何解决Elixir中的冲突行为警告
我们如何解决Elixir中的冲突行为警告我们如何解决Elixir中的冲突行为警告,elixir,warnings,behavior,Elixir,Warnings,Behavior,我们如何解决Elixir中的冲突行为警告 warning: conflicting behaviours found. function handle_info/2 is required by Raxx.Server and GenServer 例如,我需要在一个modeule中同时使用GenServer和Raxx.SimpleServer,并定义@回调句柄信息 defmodule TestServer use Raxx.SimpleServer use GenServer def
warning: conflicting behaviours found. function handle_info/2 is required by Raxx.Server and GenServer
例如,我需要在一个modeule中同时使用GenServer
和Raxx.SimpleServer
,并定义@回调
句柄信息
defmodule TestServer
use Raxx.SimpleServer
use GenServer
def handle_info(_, state), do: {:noreply, state}
end
请确定最佳/推荐的解决方法是什么?
使用Raxx。SimpleServer
将自动设置@behavior GenServer
,因此您的使用是重复的。删除您的@behavior GenServer
(或Rax.SimpleServer
)行,它将修复您的警告:)TL;DR:您无法抑制此警告,因为您不应该交叉违反行为。OTOH,这只是一个约定,尽管有警告,代码可能会很高兴地运行
这肯定是一个错误。首先,您应该明确地告诉编译器,
handle\u info/2
是一个实现:
@impl GenServer # or @impl true
def handle_info(_, state), do: {:noreply, state}
第二,所述设计即使受到欢迎且未产生任何警告,也违反了规定
您可能应该做的是,创建一个包含一个主管的监督树,管理两个工作人员:一个用于
Raxx.SimpleServer
,另一个用于GenServer
。当需要互操作时,您应该将消息传递给相应的流程。这没有多大帮助。我最终不得不分为两个模块