遍历嵌入式 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) %>
EEx
与 ERB
几乎相同。在您的 ERB
示例中,您将类似于 lambda 或匿名函数的“块”传递给 each
函数。在我的 EEx
示例中,fn (item) ->
取代了 do |item|
。
所以现在,您不仅可以遍历 Lists
,而且还可以试验更多种类的函数,这些函数采用操纵模板的匿名函数。
我目前正在试用嵌入式长生不老药(在我的例子中是 .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) %>
EEx
与 ERB
几乎相同。在您的 ERB
示例中,您将类似于 lambda 或匿名函数的“块”传递给 each
函数。在我的 EEx
示例中,fn (item) ->
取代了 do |item|
。
所以现在,您不仅可以遍历 Lists
,而且还可以试验更多种类的函数,这些函数采用操纵模板的匿名函数。