【发布时间】:2021-03-09 14:58:20
【问题描述】:
有点 similar to this question 对于 Ocaml,我想在 Elixir 中动态生成具有不同数量的函数,这些函数可用于对不同的输入进行模式匹配。
例如,如果我在运行时获得列表项的无限输入,例如,
[1, 2, 3]
[1, 2, 1]
[1, 2, 3, 4]
# ... etc ...
我想在这样定义的模块上生成函数:
defmodule Example do
def func([x, y, z]), do: [x, y, z]
def func([x, y, x]), do: [x, y, x]
def func ([a, b, c, d]), do: [a, b, c, d]
end
这可能吗?如果可以,怎么做?我知道如果输入是在编译时定义的,你可以用宏来做到这一点,但由于输入是在运行时实时发生的,所以宏似乎不起作用。
【问题讨论】:
标签: elixir