我正在用 Elixir 编写游戏引擎。(是的,我知道这不是一种天生适合的语言——重点是看看非典型语言的使用如何影响结果的结构。)
因此,我在游戏开始时要运行几个监督者——但他们应该监督的具体内容取决于游戏。我的想法是让用户在config.exs
文件中以元组列表的形式列出必要的子项,以及参数和选项,然后主管本身将简单地从应用程序环境中提取这些元组并将它们的内容用作worker\2
(或worker\3
,视情况而定)。
但是,我找不到任何与 Python 的元组解包等效的 Elixir。对于这种特定情况,我可以通过一个简单的函数自己完成:
def unpack_worker({module, args}) do
worker(module, args)
end
def unpack_worker({module, args, opts}) do
worker(module, args, opts)
end
但这充其量感觉很笨拙,并且必须为我可能需要这种可配置性的每个功能重新编写。