25
def enumerate(arr):
    (0..arr.length - 1).to_a.zip(arr)

有什么内置的吗?它不需要让它的成员不可变,它只需要在标准库中。我不想成为继承 Array 类以向项目添加 Python 功能的人。

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

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

4 回答 4

34

在 Python 中是这样的:

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

在 Ruby 中变成这样:

a = %w(do re mi fa)
a.each_with_index do |s,i|
    puts "#{s} at index #{i}"
end
于 2012-12-18T16:10:13.307 回答
8

假设它是用于枚举,each_with_index可以做到这一点。或者,如果您有Enumerator,只需使用with_index.

于 2012-12-18T16:08:49.870 回答
7

也许更快的解决方案是:

%w(a b c).map.with_index {|x, i| [i, x] }
于 2012-12-18T16:18:46.030 回答
2

一个有趣的!

a = %w(do re mi fa)
a.length.times.zip a
于 2020-11-20T15:20:21.520 回答