【发布时间】:2019-09-07 02:44:09
【问题描述】:
当我使用以下代码运行函数时:
elements = ["A", "B"]
for element <- elements, into: [] do
struct(element, [])
end
Elixir 引发此异常:
** (FunctionClauseError) no function clause matching in Kernel.struct/3
The following arguments were given to Kernel.struct/3:
# 1
"A"
# 2
[]
# 3
#Function<18.114860832/2 in Kernel.struct/2>
Attempted function clauses (showing 4 out of 4):
defp struct(struct, [], _fun) when is_atom(struct)
defp struct(struct, fields, fun) when is_atom(struct)
defp struct(%_{} = struct, [], _fun)
defp struct(%_{} = struct, fields, fun)
为什么 Elixir 将函数作为第三个参数传递给 Kernel.struct 函数?
【问题讨论】:
-
你运行的是什么版本的 Elixir?我似乎找不到
struct/3的定义,只有struct/2。
标签: functional-programming elixir