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

È qualcosa di costruito per questo? Non ha bisogno di avere i suoi membri immutabili, deve solo essere nella libreria standard. Non voglio essere il ragazzo che sottoclasse la classe Array per aggiungere una funzione Python ad un progetto.L'enumerazione di Python in Ruby?

Ha un nome diverso in Ruby?

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

risposta

16

Qualcosa di simile in Python:

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

diventa questo in Ruby:

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

'a = 'do re Fa Mi '.split() 'potrebbe essere più vicino alla versione Ruby – Antimony

4

Forse una soluzione più rapida sarebbe:

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

Ehi ... sembra più familiare';) '. – Droogans