【问题标题】:Error when iterating over a function with two arguments in my template在我的模板中迭代具有两个参数的函数时出错
【发布时间】:2016-07-18 22:19:44
【问题描述】:

在我的视图中有一个函数用于在我的模板中动态构建 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

有什么问题?

【问题讨论】:

    标签: phoenix-framework


    【解决方案1】:

    只需一个小改动即可解决您的问题。

    您尝试使用[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
    

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2019-04-20
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多