迭代嵌入式Elixir中的列表

时间:2015-02-11 16:33:40

标签: list elixir

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

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

2 个答案:

答案 0 :(得分:24)

Elixir等效物是

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

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

答案 1 :(得分:4)

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

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

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

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

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

现在,您不仅可以迭代Lists,而且还可以尝试使用操作模板的匿名函数的各种函数。