elixir - 我们如何解决 Elixir 中的冲突行为警告

标签 elixir warnings behavior

我们如何解决 Elixir 中的冲突行为警告?

warning: conflicting behaviours found. function handle_info/2 is required by Raxx.Server and GenServer

例如,我需要在一个模块中同时使用GenServerRaxx.SimpleServer,并且都定义了@callback 句柄信息

defmodule TestServer
 use Raxx.SimpleServer
 use GenServer

 def handle_info(_, state), do: {:noreply, state}    
end

请问最好/推荐的解决方法是什么?

最佳答案

TL;DR:您无法抑制此警告,因为您不应该交叉违规行为。 OTOH,这只是一个约定,尽管有警告,代码可能会愉快地运行。


这肯定是一个 XY Problem .首先,你应该明确地告诉编译器 handle_info/2 是一个实现:

@impl GenServer # or @impl true
def handle_info(_, state), do: {:noreply, state} 

其次,如上所述的设计,即使它受到欢迎并且没有产生任何警告,也违反了SRP。 .

你可能应该做的是,有一个监督者的监督树,管理两个工作人员:一个用于 Raxx.SimpleServer,另一个用于 GenServer。当需要互操作时,将消息传递给各自的进程。

关于elixir - 我们如何解决 Elixir 中的冲突行为警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55894391/

相关文章:

elixir - 相当于 IO.inspect 函数,只返回字符串而不是打印给定的列表、映射或关键字列表?

elixir - Phoenix 的 HTTP GET 搜索表单

gcc - 在 GCC 中抑制 -Wunknown-pragmas 警告

php - 使用saveAll时修改Behavior的beforeSave中的Model数据

elixir - 如何在 Ecto 中存储 Elixir 函数?

elixir - 从 Elixir 的列表中删除最后一个元素?

c++ - 如何在不破坏代码的情况下正确修复 "zero-sized array in struct/union"警告(C4200)?

java - 如何使用 Eclipse 查找 Java 代码中潜在的数字溢出?

behavior - 状态机图如何表示为 UML 中操作的行为?

c# - CommandParameter 始终通过 ElementName 绑定(bind)传递 EventArgs,没有实际绑定(bind)值