routine sum
Documentation for routine sum
assembled from the following types:
class Range
From Range
(Range) method sum
multi method sum(--> Numeric:D)
Returns the sum of all elements in the Range. Throws X::Str::Numeric if an element can not be coerced into Numeric.
(1..10).sum # 55
class Any
From Any
(Any) method sum
Defined as:
method sum() is nodal
If the content is iterable, it returns the sum of the values after pulling them one by one.
(3,2,1).sum; # OUTPUT: «6» say 3.sum; # OUTPUT: «3»
It will fail if any of the elements cannot be converted to a number.
class List
From List
(List) routine sum
Defined as:
sub sum($list ) method sum(List:D:)
Returns the sum of all elements in the list or 0 if the list is empty. Throws an exception if an element can not be coerced into Numeric.
say (1, 3, pi).sum; # OUTPUT: «7.14159265358979» say (1, "0xff").sum; # OUTPUT: «256» say sum(0b1111, 5); # OUTPUT: «20»
If the list includes a Junction
, the result will accordingly be a Junction
:
say ( 1|2, 3).sum; # OUTPUT: «any(4, 5)»
When called on native integer arrays, it is also possible to specify a :wrap
named parameter. This will add the values as native integers, wrapping around if they exceed the size of a native integer. If you are sure you will not exceed that value, or if you don't mind, using :wrap
will make the calculation about 20x as fast.
my int @values = ^1_000_000; say @a.sum(:wrap); # OUTPUT: «499999500000»