Честно говоря, что-то запутанное, вероятно, сбивает с толку TextMate так же, как и любого другого, кто должен его поддерживать, и это включает вас в будущем.
Всякий раз, когда вы видите что-то, что сворачивается в одно значение, это хороший случай для использования Enumerable # inject.
sum = two_dimensional_array.inject(0) do |sum, row|
# Convert row to Fixnum equivalent
row_i = row.collect { |i| i.to_i }
if (row_i.sum > 5)
sum += row_i.collect { |i| i ** 2 }.average
end
sum # Carry through to next inject call
end
В вашем примере странным является то, что вы используете select для возврата полного массива, якобы преобразованного с использованием to_i, но на самом деле Enumerable # select ничего такого не делает, а вместо этого отклоняет любой, для которого функция возвращает nil. Я предполагаю, что это не ваша ценность.
Кроме того, в зависимости от того, как реализован ваш метод .average, вы можете задать начальный вызов инъекции с 0.0 вместо 0, чтобы использовать значение с плавающей запятой.