繁体   English   中英

在嵌入式 Elixir 中迭代列表

[英]Iterate over list in embedded Elixir

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

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

Elixir 的等价物是

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

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

我很好奇这是否可以使用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) ->代替了do |item| .

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM