inject

介绍

inject 方法定义在 module Enumerable 中,它让你可以通过集合中的元素 来通过某种计算得到一个值

[1,3,5,7].inject(0){|s,i| s +i} #=> 16
[1,3,5,7].inject(0){|s,i| s *i} #=>105

inject工作方式(用上面的例子来讲解): 当关联的block第一次被调用的时候:s被赋予参数的值, i 被赋予 集合的第一个元素的值,在第二次和接下来调用block的时候: s 被赋予上一次block调用返回的值。inject最后的值就是 block最后一次被调用返回的值。

note: 如果inject调用的时候没有传参数,那么第一次调用block的时候就赋予S 集合中的第一个元素,从第二个元素开始迭代也就是把第二元素赋予 i
例子如下:

[1,3,5,7].inject{|s,i| s+i}  #=> 16
[1,3,5,7].inject{|s,i| s*i}  #=> 105

特别用法:

[1,3,5,7].inject(:+)#=>16

note: just to add to the mystique of inject, you can also give it the name of the method you want to apply to successive elements of the collection. These examples work because, in Ruby, addition and multiplication are simply methods on numbers, and :+ is the symbol corresponding to the method +

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值