2012-12-18 65 views
15
def enumerate(arr): 
    (0..arr.length - 1).to_a.zip(arr) 

这是内置的东西吗?它不需要它的成员不可变,它只需要在标准库中。我不想成为Array类的子类来为项目添加Python特性。Python的枚举在Ruby中?

它在Ruby中有不同的名字吗?

%w(a b c).enumerate 
=> [[0, "a"], [1, "b"], [2, "c"], [3, "d"]] 

回答

16

像这样的东西在Python:

a = ['do', 're', 'mi', 'fa'] 
for i, s in enumerate(a): 
    print('%s at index %d' % (s, i)) 

成为这红宝石:

a = %w(do re mi fa) 
a.each_with_index do |s,i| 
    puts "#{s} at index #{i}" 
end 
+1

'一个=“做重新ㄙ '.split()'可能更接近Ruby版本 – Antimony

4

也许更快的解决办法是:

%w(a b c).map.with_index {|x, i| [i, x] } 
+0

嘿......看起来更熟悉';)'。 – Droogans