2009-07-19 42 views
5

這是DRYest在ruby中做到這一點的方法嗎?在一行代碼中初始化和遞增一個變量

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

它初始化「N」到「1" ,並作爲循環的進行遞增它(並打印出來),因爲這是一個我的應用程序的意見

回答

16

您可以使用三元運算符:

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

但是,這取決於你想做什麼,我猜的each_with_index會更合適

<% @items.each_with_index do |item, n| %> 
    <%= n %> 
<% end %> 
+0

好啊,我想第二個選擇是我在找的東西。 – Zepplock 2009-07-19 19:45:36

+0

也有一種方法來分配一個初始值爲「n」? – Zepplock 2009-07-19 19:48:07

0

嗯。

n = @items.size 
5

你也可以依靠ruby的零強制轉換爲一個導致零的整數。

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