2015-02-11 15 views
7

Obecnie próbuję wbudowanego eliksiru (w moim przypadku plików .html.eex). Wiem, jak renderować skróty eliksiru, ale nie mogłem wymyślić, jak utworzyć zawartość pokazującą wszystkie elementy na liście. Ruby to działa tak:Iteracja na liście w osadzonym eliksiru

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

Odpowiedz

18

Równowartość Elixir jest

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

Należy pamiętać, że trzeba użyć <%= przed for w Elixir.

+0

"dla potrzeb pętli a ="? Masz na myśli <% = na tagu otwierającym? –

+1

Tak, otwierający tag! –

+0

Starałem się, aby było jaśniejsze. Możesz zaproponować edycję, jeśli możesz wymyślić lepszy sposób wyrażenia tego! :) –

2

Byłem ciekawy, czy było to możliwe przy użyciu modułu Enum, ponieważ odpowiedź Patricka Oscity opiera się na Comprehensions, która wygląda jak zwykłe opakowanie dla modułu Enum.

Odpowiedź brzmi: tak. Najpierw próbowałem z Enum.each. Który tajemniczo wydrukował tylko ok na ekranie, ale to właśnie robi Enum.each; zawsze zwraca atom :ok.

Wyobraziłem sobie, że Enum.map byłby lepszym strzałem, ponieważ zwraca listę wyników. Spójrz:

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

EEx działa prawie tak samo jak ERB. W swoim przykładzie ERB podajesz "blok", który jest analogiczny do funkcji lambda lub anonimowej, do funkcji each. W moim przykładzie EExfn (item) -> zajmuje miejsce do |item|.

Teraz nie tylko można powtórzyć ponad Lists, ale można eksperymentować z szerszą gamą funkcji, które wymagają anonimowej funkcji, która manipuluje szablonem.