gpt4 book ai didi

elixir - 如何使用 Elixir 宏创建动态函数名称?

转载 作者:行者123 更新时间:2023-12-03 08:18:11 25 4
gpt4 key购买 nike

我想动态创建一个函数名称。我写了这个宏

defmacro generate_dynamic(name) do
quote do
def add_(unquote(name)) do
end
end
end

我是这样用的:
defmodule AnotherModule do
generate_dynamic :animal
end

现在,我只得到 AnotherModule.add_函数已定义,而我期望 AnotherModule.add_animal功能。

最佳答案

要实现此目的,您可以添加 :add_取消引用之前的名称。此外,在这种情况下,方法名称后面的括号是必需的,以防止歧义。这应该可以解决问题:

defmacro generate_dynamic(name) do
quote do
def unquote(:"add_#{name}")() do
# ...
end
end
end

关于elixir - 如何使用 Elixir 宏创建动态函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30498528/

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