我是Elixir的新手,我写了电报机器人。我将此项目用作模板:https://github.com/lubien/elixir-telegram-bot-boilerplate
它工作正常,但我有几个问题。
如何分割"命令"如果它太大了?我有一个想法是使用use App.Commander
创建一个新模块NewCommands,并将其添加到Matcher中的handle_cast
。这是正确的方式吗?
为什么Matcher作为GenServer运行?我认为它不需要任何状态或任何状态。
答案 0 :(得分:2)
use
, import
, and require
之间的区别。每当我们想要在不使用完全限定名称的情况下轻松访问其他模块的函数或宏时,我们就会使用
import
。
所以不,use
不应该在这里使用:import
应该。其他方式是将命令定义为宏并将require
定义为它们,或者在__using__
的{{1}}宏中编写一个特殊函数生成,然后才NewCommands
它。< / p>
use
自动重生,出现问题并且崩溃了,对吧? Erlang的理念是“很快崩溃”,因此我们只是让进程崩溃而不是繁琐的错误处理。 Aftwerwards,如果您仍想匹配,则应重新生成,以便提供进一步的请求。此外,它在Matcher
之前用作调度程序。