【问题标题】:Iterate over list in embedded Elixir迭代嵌入式 Elixir 中的列表
【发布时间】:2020-11-17 02:31:48
【问题描述】:

我目前正在尝试嵌入式 elixir(在我的情况下为 .html.eex 文件)。我知道如何渲染长生不老药哈希,但我不知道如何创建一个显示列表中所有项目的内容。在 Ruby 中,它会像这样工作:

<% array.each do |item| %>
    <p> <%= item %> </p>
<% end %> 

【问题讨论】:

    标签: list elixir


    【解决方案1】:

    Elixir 等价物是

    <%= for item <- list do %>
      <p><%= item %></p>
    <% end %>
    

    请注意,您必须在 Elixir 中的 for 前面使用 &lt;%=

    【讨论】:

    • "for 循环需要一个 ="?你的意思是
    • 是的,开始标签!
    • 我试图让它更清楚。如果您能想到更好的表达方式,欢迎您提出修改建议! :)
    • 像魅力一样工作。谢谢
    • @PatrickOscity 不用担心;我只是想确认我对您的理解是正确的。
    【解决方案2】:

    我很好奇这是否可以使用 Enum 模块,因为 Patrick Oscity 的回答依赖于 Comprehensions,它看起来只是 Enum 模块的包装器。

    答案是肯定的。我首先尝试使用Enum.each。神秘地只将ok 打印到屏幕上,但这就是Enum.each 所做的;它总是返回 :ok 原子。

    我认为Enum.map 会更好,因为它会返回结果列表。看看:

    <%= Enum.map(@list, fn(item) -> %>
      <p><%= item %></p>
    <% end) %>
    

    EEx 的工作方式与ERB 几乎相同。在您的 ERB 示例中,您将类似于 lambda 或匿名函数的“块”传递给 each 函数。在我的EEx 示例中,fn (item) -&gt; 代替了do |item|

    所以现在,您不仅可以迭代 Lists,还可以试验更多种类的函数,这些函数采用操纵模板的匿名函数。

    【讨论】:

    • 确实,它的工作方式与ERB 的东西非常相似 :) 不过有一件事 - 它应该是 &lt;%= Enum.map(@list, fn(item) -&gt; %&gt; ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多