2015-02-11 3 views
7

В настоящее время я пытаюсь внедрить эликсир (в моем случае .html.eex файлы). Я знаю, как рендерить хэши эликсира, но я не мог понять, как я создаю контент, показывающий все элементы внутри списка. В Ruby он будет работать так:Перечислить список во встроенном Elixir

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

ответ

18

Эквивалент Эликсир

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

Обратите внимание, что вы должны использовать <%= перед for в эликсира.

+0

"for loop needs a ="? Вы имеете в виду <% = на открытии тега? –

+1

Да, открывающий тег! –

+0

Я попытался прояснить ситуацию. Вы можете предложить редактировать, если вы можете подумать о лучшем способе выразить это! :) –

2

мне было интересно, если это было возможно с помощью Enum модуля, так как ответ Патрика Oscity полагается Comprehensions которые выглядят как только обертка для Enum модуля.

Ответ да. Сначала я попробовал Enum.each. Какой таинственно напечатал только ok, но это то, что делает Enum.each; он всегда возвращает атом :ok.

Я понял, что Enum.map был бы лучшим, так как он возвращает список результатов. Посмотрите:

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

EEx работает почти так же, как ERB. В вашем примере ERB вы передавали функцию «блок», которая аналогична функции лямбда или анонимности, функции each. В моем примере EExfn (item) -> занимает место do |item|.

Итак, теперь вы можете не только перебирать Lists, но вы можете поэкспериментировать с более широким спектром функций, которые используют анонимную функцию, которая управляет шаблоном.

Смежные вопросы