gpt4 book ai didi

erlang - 你如何参数化一个 gen_server 模块?

转载 作者:行者123 更新时间:2023-12-04 16:28:16 26 4
gpt4 key购买 nike

编辑:

我不希望将参数用作构建 Erlang 程序的通用方式——我仍在学习传统的设计原则。我也不打算效仿 OOP。我在这里唯一的一点是让我的 gen_server 调用在服务器实例之间保持一致。这对我来说更像是修复了一个 splinter 的抽象。我可以想象一个语言或 OTP 可以方便地使用任何 gen_server 实例的 api 的世界,这就是我想要生活的世界。

感谢 Zed 表明我的主要目标是可能的。

谁能想出在 gen_servers 上使用参数化模块的方法?在下面的示例中,我们假设 test_child 是一个带有一个参数的 gen_server。当我尝试启动它时,我得到的只是:

42> {test_child, "hello"}:start_link().
** exception exit: undef
in function test_child:init/1
called as test_child:init([])
in call from gen_server:init_it/6
in call from proc_lib:init_p_do_apply/3

最终,我试图找出一种方法来使用 gen_server 的多个命名实例。据我所知,一旦你开始这样做,你就不能再使用漂亮的 API 并且必须使用 gen_server:call 和 gen_server:cast 在你的实例中抛出消息。如果我能告诉实例他们的名字,这个问题就会得到缓解。

最佳答案

我只想说两件事:

  • archaelus 正确地解释了它。正如他所说,他展示的最后一种方式是推荐的方式,并按照您的期望进行。
  • 绝不,绝不,绝不,从不 使用您尝试的表格!它是过去的遗留物,它从来没有像你想要的那样,现在被强烈反对。
  • 关于erlang - 你如何参数化一个 gen_server 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280176/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com