我正在嘗試嵌入式elixir(在我的情況下.html.eex文件)。我知道如何渲染靈藥散列,但我無法弄清楚如何創建一個顯示列表中所有項目的內容。在Ruby中它的工作是這樣的:在嵌入式Elixir中迭代列表
<% array.each do |item| %>
<p> <%= item %> </p>
<% end %>
我正在嘗試嵌入式elixir(在我的情況下.html.eex文件)。我知道如何渲染靈藥散列,但我無法弄清楚如何創建一個顯示列表中所有項目的內容。在Ruby中它的工作是這樣的:在嵌入式Elixir中迭代列表
<% array.each do |item| %>
<p> <%= item %> </p>
<% end %>
靈藥相當於是
<%= for item <- list do %>
<p><%= item %></p>
<% end %>
注意,您必須在藥劑的for
前使用<%=
。
我很好奇,如果這可以使用Enum
模塊,因爲Patrick Oscity的答案依賴於Comprehensions
,它看起來只是Enum
模塊的包裝。
答案是肯定的。我第一次嘗試與Enum.each
。其中神祕地只將ok
印到屏幕上,但這就是Enum.each
所做的;它總是返回原子的:ok
。
我想Enum.map
會更好,因爲它返回一個結果列表。請看:
<%= Enum.map(@list, fun(item) -> %>
<p><%= item %></p>
<% end) %>
EEx
作品幾乎一樣ERB
。在你的ERB
例子中,你將一個類似於lambda或anonymous函數的「block」傳遞給each
函數。在我的EEx
示例中,fn (item) ->
取代了do |item|
。
因此,現在,您不僅可以遍歷Lists
,還可以嘗試使用操作模板的匿名函數的各種函數。
「for循環需要a =」?你是說開始標籤上的<%=? – 2015-02-11 18:41:25
是的,開標籤! – 2015-02-11 19:40:35
我試圖讓它更清晰。如果您能想出更好的表達方式,歡迎您提出編輯建議! :) – 2015-02-11 19:53:44