Как правильно сложить массив?

Возможный дубликат:
Как суммировать элементы массива в Ruby?

Допустим, у меня есть этот массив

@test = [1, 2, 3, 4]

Тогда я хочу сделать:

@test[0] + @test[1] + @test[2] + @test[3]

Нет более умного и быстрого способа сделать это?


person Rails beginner    schedule 15.01.2012    source источник
comment
Посмотрите на это: stackoverflow.com / questions / 1538789 /   -  person Jeremy D    schedule 16.01.2012


Ответы (2)


Ты можешь это сделать:

@test.inject(:+)
person iwasrobbed    schedule 15.01.2012
comment
складкам в качестве начального значения требуется идентификатор: @test.inject(0, :+) - person tokland; 16.01.2012
comment
Не с рубином, если вы не укажете начальное значение, он использует первое значение в коллекции в качестве начального значения: ruby-doc.org/core-1.9.3/Enumerable.html - person Jesse Pollak; 16.01.2012
comment
@tokland: если вы явно не указываете начальное значение для memo, то в качестве начального значения для memo используется первый элемент коллекции. (из документации) - person steenslag; 16.01.2012
comment
Более конкретно: ruby-doc.org/core-1.9 .3 / Enumerable.html # method-i-inject - person Dave Newton; 16.01.2012
comment
jesse, steenslag: не для пустых входов: [].inject(:+). Я предполагаю, что OP хочет общее решение, а не для 4 элементов. - person tokland; 16.01.2012

person    schedule
comment
это нормально для многих (императивных) языков, но в Ruby (функциональный) Enumerable#inject - идиоматическое решение. - person tokland; 16.01.2012