遍历嵌入式 Elixir 中的列表

Iterate over list in embedded Elixir

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

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

Elixir 等价物是

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

请注意,在 Elixir 中,您必须在 for 前面使用 <%=

我很好奇使用 Enum module, since Patrick Oscity's answer relies Comprehensions which look to be just a wrapper for the Enum 模块是否可行。

答案是肯定的。我首先尝试使用 Enum.each. Which mysteriously only printed ok to the screen, but that's what Enum.each 做;它总是 returns :ok 原子。

我认为 Enum.map 会更好,因为它 returns 是一个结果列表。看一看:

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

EExERB 几乎相同。在您的 ERB 示例中,您将类似于 lambda 或匿名函数的“块”传递给 each 函数。在我的 EEx 示例中,fn (item) -> 取代了 do |item|

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