Я хочу обработать массив ['a', 'b', 'c']
, чтобы вернуть строку '0a1b2c'
(т. Е. Строка, образованная путем объединения каждого индекса с его значением).Как я могу связать with_index и with_object с перечислимым в ruby?
Я могу это сделать:
result = ''
['a', 'b', 'c'].each.with_index do |char, i|
result += "#{i}#{char}"
end
result
Я хочу, чтобы исключить переменный результат за пределами блока с помощью with_object.
Что-то вроде этого:
['a', 'b', 'c'].each.with_index.with_object('') do |char, i, result|
result += "#{i}#{char}"
end
Но это вызывает ошибку undefined method '+' for nil:NilClass
Попробуйте это: 'перечислимую = [ 'A', 'B', 'C'] each.with_index.with_object ('') # => # <Перечислитель:. # <Перечислитель: # < Перечислитель: ["a", "b", "c"]: each>: with_index>: with_object ("")> '. Элементами, сгенерированными этим перечислителем и переданными в блок, будут 'enum.to_a # => [[[" a ", 0]," "], [[" b ", 1]," "], [[" c ", 2]," "]]' Это говорит вам, как нужно записывать блок-переменные: '(char, i), result = enum.next # => [[" a ", 0]," "] ', поэтому' char # => "a"; i # => 0; result # => "" '. Примечание «результат» будет меняться в ходе вычислений. –