Ответ 1
Что-то вроде этого в 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
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"]]
Что-то вроде этого в 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
Предполагая это для перечисления, each_with_index
может это сделать. Или, если у вас есть Enumerator
, просто используйте with_index
.
Возможно, более быстрое решение будет:
%w(a b c).map.with_index {|x, i| [i, x] }