迭代嵌入式Elixir中的列表

Sto*_*cki 11 list elixir

我目前正在尝试使用嵌入式elixir(在我的例子中是.html.eex文件).我知道如何渲染elixir哈希,但我无法弄清楚如何创建显示列表中所有项目的内容.在Ruby中它会像这样工作:

<% array.each do |item| %>
    <p> <%= item %> </p>
<% end %> 
Run Code Online (Sandbox Code Playgroud)

Pat*_*ity 27

Elixir相当于

<%= for item <- list do %>
  <p><%= item %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,开始标签! (2认同)

Bre*_*dly 10

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

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

我认为Enum.map会是一个更好的镜头,因为它会返回一个结果列表。看一看:

<%= Enum.map(@list, fn(item) -> %>
  <p><%= item %></p>
<% end) %>
Run Code Online (Sandbox Code Playgroud)

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

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