2015-02-11 16 views
7

Tôi hiện đang thử dùng elixir được nhúng (trong các tệp .html.eex của tôi). Tôi biết làm thế nào để làm cho băm elixir, nhưng tôi không thể tìm ra cách tôi tạo ra một nội dung hiển thị tất cả các mục bên trong một danh sách. Trong Ruby nó sẽ làm việc như thế này:Lặp lại danh sách trong Elixir

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

Trả lời

18

Elixir tương đương là

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

Lưu ý rằng bạn phải sử dụng một <%= ở phía trước của for trong Elixir.

+0

"cho vòng lặp cần a ="? Bạn có nghĩa là <% = trên thẻ mở? –

+1

Vâng, thẻ mở! –

+0

Tôi đã cố gắng làm cho nó rõ ràng hơn. Bạn được hoan nghênh đề xuất chỉnh sửa nếu bạn có thể nghĩ ra cách tốt hơn để thể hiện điều này! :) –

2

Tôi đã tò mò liệu điều này có thể sử dụng mô-đun Enum không, vì câu trả lời của Patrick Oscity dựa trên Comprehensions mà chỉ là một trình bao bọc cho mô-đun Enum.

Câu trả lời là có. Lần đầu tiên tôi thử với Enum.each. Mà chỉ bí ẩn in ok vào màn hình, nhưng đó là những gì Enum.each làm; nó luôn trả về nguyên tử :ok.

Tôi đã tìm được Enum.map sẽ là ảnh đẹp hơn vì nó trả về danh sách kết quả. Hãy xem:

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

EEx hoạt động gần giống như ERB. Trong ví dụ ERB của bạn, bạn đã chuyển một "khối", tương tự như một hàm lambda hoặc ẩn danh, đến hàm each. Trong ví dụ EEx của tôi, số fn (item) -> thay thế cho số do |item|. Vì vậy, bây giờ, không chỉ bạn có thể lặp qua Lists, nhưng bạn có thể thử nghiệm với nhiều chức năng khác nhau có chức năng ẩn danh thao tác mẫu.

Các vấn đề liên quan