2012-11-12 86 views
0

數組列表如何轉換此陣:創建一個從Ruby的

@list = ["one", "two", "three", "four"] 

到像這樣的鑰匙一個新的數組前綴:

@new_list = ["1. one", "2. two", "3. three", "4. four"] 

使用Ruby的eachinject

+1

爲什麼我們要使用的要求注入的?我可以看到'inject'或'each',但不是兩者。這是功課嗎? –

+0

這也是非常有用的,特別是對你來說,回答[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

回答

8

收集/地圖是更自然的方法。

@new_list = @list.map.with_index {|item, index| "#{index+1}. #{item}"} 

紅寶石1.9,你可以鏈統計員這樣

+0

謝謝...似乎工作。 –

+1

在1.9.2中(也許全部是1.9),你也可以用'@list.collect.with_index {...}',它看起來更清晰:) – Rym

+0

我同意。另外,FWIW最好使用'map'別名,原因有三個:它的輸入較少,使用更頻繁,並且與其他語言中的映射/縮減術語相匹配。 –