`
mlzboy
  • 浏览: 726489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ruby inject sum

阅读更多

I have an array of integers.

For example:

array = [123,321,12389]

Is there any nice way to get the sum of them?

I know, that

sum = 0
array
.each { |a| sum+=a }

would work.

link|flag

 
   
 
add comment
 
start a bounty <script></script>

4 Answers

up vote 12 down vote accepted

Try this:

array.inject{|sum,x| sum + x }

Documentation

link|flag
 
 
up vote
 
flag
jorney's array.inject(:+) is more efficient. – Peter Oct 9 '09 at 7:09
 
add comment

Add sum to the Array class

class Array
   
def sum
       
self.inject{|sum,x| sum + x }
   
end
end

Then do fun stuff like:

[1,2,3,4].sum
link|flag
 
 
up vote
 
flag
I've done this before, very useful :-) – Topher Fangio Oct 8 '09 at 18:30
 
add comment

Alternatively (just for comparison), if you have Rails installed (actually just ActiveSupport):

require 'activesupport'
array
.sum
link|flag
 
   
 
add comment

Or try the ruby 1.9 way

array.inject(:+)

link|flag
 
1
up vote
 
flag
Also works with 1.8.7 – glenn jackman Oct 8 '09 at 16:29
1
up vote
 
flag
Also works with Rails – khelll Oct 8 '09 at 18:30
 
up vote
 
flag
beautiful, you made my day – marcgg Dec 23 '09 at 13:39
 
add comment
分享到:
评论

相关推荐

    Ruby Data-Processing ruby数据处理

    2. **Ruby Reduce**: Reduce(也称为fold或inject)函数用于对数组的所有元素进行累积操作,通常用于聚合操作,如求和、乘积或计算平均值。例如,计算数组元素的总和: ```ruby numbers = [1, 2, 3, 4, 5] sum =...

    ruby的惯用法的使用

    - **注入操作**: Ruby中的`inject`方法类似于Python中的`reduce`函数。 ```ruby numbers = [1, 2, 3] sum = numbers.inject(0) { |total, num| total + num } # Python: from functools import reduce numbers...

    21个你应该知道的Ruby编程技巧

    `inject`可以对集合进行聚合操作,如`numbers.inject(0) { |sum, num| sum + num }`求和。 18. **块变量和局部变量的区别** 块变量(如`|x|`)仅在块内有效,而局部变量在整个作用域内有效。 19. **自定义错误类...

    Ruby基础知识之基本流程控制

    a8 = a1.inject(10) { |sum, x| sum + x } # 指定初始值10 puts a8 ``` 通过这些基础的流程控制工具,开发者可以在Ruby中编写出各种复杂的逻辑,实现灵活的数据处理和控制流程。了解和熟练掌握这些概念是成为熟练的...

    举例讲解Ruby中迭代器Iterator的用法

    [1, 3, 5, 7].inject { |sum, element| sum + element } # 计算数组元素之和,这里是 16 [1, 3, 5, 6].inject { |product, element| product * element } # 计算数组元素的乘积,这里是 105 ``` 使用符号参数...

    enumerables:实现Ruby可枚举方法

    sum = [1, 2, 3, 4, 5].inject(0) { |total, num| total + num } # 返回15 ``` 5. all?、any?、none?和one?方法:用于检查集合中的元素是否满足特定条件。 - all?:所有元素都满足条件时返回true。 ```ruby ...

    zipf_distribution:Ruby 中的齐夫定律

    total_words = sorted_word_count.inject(0) { |sum, _| sum + _[1] } zipf_ratio = (rank**-1).to_f zipf_frequency = total_words / (rank * zipf_ratio) puts "Rank\tWord\tFrequency\tTheoretical Zipf ...

    C语言中编写可变参数函数

    e.inject { |sum, i| sum += i } end sum(1, 2, 3, 4, 5) =&gt; 15 ``` 可以看出,ruby语言中使用可变参数函数的方式要比C语言简便得多。 C语言中编写可变参数函数需要使用stdarg.h头文件,并遵循特定的格式来声明...

    Enumerables_project

    sum = [1, 2, 3, 4, 5].inject(0, :+) # =&gt; 15 product = [1, 2, 3, 4, 5].inject(1, :*) # =&gt; 120 ``` 5. **group_by**方法:根据元素的某个属性或计算结果将集合元素分组,返回一个哈希,键是分组的标准,值是...

Global site tag (gtag.js) - Google Analytics