Changeset 4489
- Timestamp:
- 06/24/06 16:14:59 (2 years ago)
- Files:
-
- trunk/activesupport/CHANGELOG (modified) (1 diff)
- trunk/activesupport/lib/active_support/core_ext/enumerable.rb (modified) (2 diffs)
- trunk/activesupport/test/core_ext/enumerable_test.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activesupport/CHANGELOG
r4485 r4489 1 1 *SVN* 2 3 * Added Enumerable#sum for calculating a sum from the elements [DHH]. Examples: 4 5 payments.sum { |p| p.price * p.tax_rate } 6 payments.sum(&:price) 7 8 This is instead of payments.inject(0) { |sum, p| sum + p.price } 2 9 3 10 * Correct and clarify Array#to_sentence docs. #5458 [brad@madriska.com] trunk/activesupport/lib/active_support/core_ext/enumerable.rb
r4349 r4489 1 require File.dirname(__FILE__) + '/enumerable/injections' 2 1 3 module Enumerable #:nodoc: 2 4 # Collect an enumerable into sets, grouped by the result of a block. Useful, … … 21 23 end 22 24 end 25 26 # Calculates a sum from the elements. Examples: 27 # 28 # payments.sum { |p| p.price * p.tax_rate } 29 # payments.sum(&:price) 30 # 31 # This is instead of payments.inject(0) { |sum, p| sum + p.price } 32 def sum 33 inject(0) { |sum, element| sum + yield(element) } 34 end 23 35 end trunk/activesupport/test/core_ext/enumerable_test.rb
r4349 r4489 2 2 require File.dirname(__FILE__) + '/../../lib/active_support/core_ext/enumerable' 3 3 4 Payment = Struct.new(:price) 5 4 6 class EnumerableTests < Test::Unit::TestCase 5 6 7 def test_group_by 7 8 names = %w(marcel sam david jeremy) … … 18 19 end 19 20 end 21 22 def test_sums 23 payments = [ Payment.new(5), Payment.new(15), Payment.new(10) ] 24 assert_equal 30, payments.sum(&:price) 25 assert_equal 60, payments.sum { |p| p.price * 2 } 26 end 20 27 end