在我的模板中迭代具有两个参数的函数时出错
Error when iterating over a function with two arguments in my template
在我看来,我有一个函数可以用来在我的模板中动态构建 HTML 元素:
defmodule Recursion do
def buildElements(element,n) when n <= 1 do
element
end
def buildElements(element, n) do
[element | buildElements(element, n - 1)]
end
end
它工作得很好,除非我尝试在我的模板中迭代它:
<%= for element <- MyProject.PageView.Recursion.buildElements("LOL", 2) do %>
<%= element %>
<% end %>
我收到这个错误:
no function clause matching in Enum."-reduce/3-lists^foldl/2-0-"/3
有什么问题?
只需一点小改动就可以解决您的问题。
您尝试使用 [foo | bar]
符号向列表中添加元素。 bar
必须是列表,而 foo
是单个项目。
将您的 element
更改为 [element]
即可完成。
def buildElements(element,n) when n <= 1 do
[element]
end
def buildElements(element, n) do
[element | buildElements(element, n - 1)]
end
在我看来,我有一个函数可以用来在我的模板中动态构建 HTML 元素:
defmodule Recursion do
def buildElements(element,n) when n <= 1 do
element
end
def buildElements(element, n) do
[element | buildElements(element, n - 1)]
end
end
它工作得很好,除非我尝试在我的模板中迭代它:
<%= for element <- MyProject.PageView.Recursion.buildElements("LOL", 2) do %>
<%= element %>
<% end %>
我收到这个错误:
no function clause matching in Enum."-reduce/3-lists^foldl/2-0-"/3
有什么问题?
只需一点小改动就可以解决您的问题。
您尝试使用 [foo | bar]
符号向列表中添加元素。 bar
必须是列表,而 foo
是单个项目。
将您的 element
更改为 [element]
即可完成。
def buildElements(element,n) when n <= 1 do
[element]
end
def buildElements(element, n) do
[element | buildElements(element, n - 1)]
end