2015-02-11 70 views
7

我正在嘗試嵌入式elixir(在我的情況下.html.eex文件)。我知道如何渲染靈藥散列,但我無法弄清楚如何創建一個顯示列表中所有項目的內容。在Ruby中它的工作是這樣的:在嵌入式Elixir中迭代列表

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

回答

18

靈藥相當於是

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

注意,您必須在藥劑的for前使用<%=

+0

「for循環需要a =」?你是說開始標籤上的<%=? – 2015-02-11 18:41:25

+1

是的,開標籤! – 2015-02-11 19:40:35

+0

我試圖讓它更清晰。如果您能想出更好的表達方式,歡迎您提出編輯建議! :) – 2015-02-11 19:53:44

2

我很好奇,如果這可以使用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,還可以嘗試使用操作模板的匿名函數的各種函數。