2012-01-03 2 views
1

나는 Rails 3.1에서 상대적인 멍청한 사람으로 일하고 있는데,이 코드를 사용하여 날짜 - 정렬 된 배열로 db로부터 사용자 트랜잭션 양을 추출했다. (날짜와 amount_cents는 db 속성이다.)배열 요소의 누적 합계를 계산하는 방법은 무엇입니까?

@user_trans = User.transactions.order ("date"). map {| t | t.amount_cents}

=> [1000, -350, -250, 600, 750, -450]

I 쉽게와 배열의 총 얻을

:

@ user_trans.sum => 1300

하지만 난 그냥 알아낼 수있는 것은 실행 합계 결과 등, 배열의 각 요소를 반복하고 세 번째로 두 번째, 두 번째로 첫 번째 요소를 추가하는 우아한 방법입니다

[1000, 650, 400, 1000, 1750, 1300]

.each 또는 .inject가 사용되는 방법이 될 것 같지만 clunky 멀티 라인 해킹 외부에서이 작업을 수행하는 마법 구문을 찾지 못했지만 간소화 된 접근 방식이 있어야합니다. 명령은 중요합니다. 어쩌면 전체를 회귀 한 다음 뒤집을 수 있을까요? 나는 희망 기대와 당신의 발에 앉아

... 여기 :)

답변

4

은 한 줄입니다. to_i은 결과 배열이 비어있는 첫 번째 요소를 처리하는 데 필요합니다 (nil.to_i0으로 평가됨).

@user_trans.inject([]) { |result, element| result << result.last.to_i + element } 
+0

굉장! 완벽하게 우아합니다. 내가 잃어버린 마지막 선택자 였어. 감사. – awvidmer

관련 문제