инициализация и приращение переменной в одной строке кода - PullRequest
6 голосов
/ 19 июля 2009

Это самый сухой способ сделать это в рубине?

<% for item in @items %>
  <%= n = n + 1 rescue n = 1 %>
<% end %>

, который инициализирует «n» в «1» и увеличивает его по мере прохождения цикла (и распечатывает его), поскольку это находится в одном из представлений моего приложения

Ответы [ 3 ]

16 голосов
/ 19 июля 2009

Вы можете использовать троичный оператор:

<% for item in @items %>
  <%= n = n ? n+1 : 1 %>
<% end %>

Но, в зависимости от того, что вы пытаетесь сделать, я предполагаю, что each_with_index будет более подходящим

<% @items.each_with_index do |item, n| %>
  <%= n %>
<% end %>
5 голосов
/ 15 августа 2013

Вы также можете полагаться на нулевое приведение ruby ​​к целому числу, которое приводит к нулю.

<% for item in @items %>
  <%= n = n.to_i + 1 %>
<% end %>
0 голосов
/ 20 июля 2009

Um.

n = @items.size
...