美文网首页
详解ruby 的inject和reduce函数

详解ruby 的inject和reduce函数

作者: 又不行了 | 来源:发表于2017-03-30 14:04 被阅读0次

本来想写一篇关于数组遍历处理函数的总结的,写着写着发现还是得把这两个函数单独抽出了讲上一讲,我是直接跳进inject和reduce函数里面看的,发现这两个函数注释简直就是复制粘贴,不说这么多,先上图

这里面对两个函数的用法已经讲得很清楚了,我就不再解释了,但是我们可以看到下图,两个函数的用法说明是一摸一样的,但用法示例却是不一样的,难道区别就在这里吗?

于是我就抱着一种求知探索的精神把这两个函数都试了一遍,最终发现它们真的是一模一样的,

先不说这么多,上图自己看(虽然我还是不死心,但是时间紧迫,先试到这里)

感觉讲到这里就没什么好讲了,不行,这样子走掉很没面子的,就再来扯下皮,嗯~,就说一下对inject和reduce函数的个人理解吧,基于上面证明两者是一样的,我就用inject来讲解下(不要问我为什么用inject,因为我喜欢,个人比较懒,就直接用官方示例了)

刚刚写到下面发现写不下去了,所以先回来讲一下inject的作用机理

enum.reduce(initial) { |memo, obj| block }

enum:数组

initial:为初始值赋值

memo:初始值

obj:遍历数组里的具体对象

block:方法体

1.把initial的值赋给memo

2.memo和obj经过block的处理得出的值再次赋给memo

3.这时候memo的值已经更新,继续与obj经过block的处理得出的值再次赋给memo

4.一直重复3步骤直到enum遍历到最后一个对象

基本使用语法:

enum.inject(initial, sym) 

enum.inject(sym)          

enum.inject(initial) { |memo, obj| block }  

enum.inject{ |memo, obj| block }  

enum.inject(initial)  do |memo, obj|

     block

end

好,搞定,收工,如果有什么问题可以在下面留言

相关文章

  • 详解ruby 的inject和reduce函数

    本来想写一篇关于数组遍历处理函数的总结的,写着写着发现还是得把这两个函数单独抽出了讲上一讲,我是直接跳进injec...

  • 器-用:ruby高效能方法 — reduce方法

    一、reduce方法的作用 reduce方法是ruby中的一个重要的方法,也叫inject方法(Ruby1.9之前...

  • ruby中的inject和reduce

    reduce是inject的一个别名,这两个方法的作用相同,出现两个方法是为了让从其他语言过来的程序员感觉习惯。r...

  • Tap, Inject and Each_with_object

    Ruby 中 Tap, Inject 和 Each_with_object 中文翻译说明:分析 inject 和 ...

  • 5-python中reduce()函数

    reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数...

  • java 8 stream reduce详解和误区

    java 8 stream reduce详解和误区 简介 Stream API提供了一些预定义的reduce操作,...

  • day3

    实现一个reduce函数,作用和原生的reduce类似。

  • reduce()函数

    reduce()函数接收的参数和map()类似,一个函数f,一个list,但行为和map()不同,reduce()...

  • gem details

    Gem 操作指南 and Ruby Gem 命令详解 Gem 是一个管理ruby库和程序的标准包,它通过Ruby ...

  • Hadoop权威指南学习笔记

    1.关于MapReduce: map函数: reduce函数: combiner(合并函数):在reduce函数处...

网友评论

      本文标题:详解ruby 的inject和reduce函数

      本文链接:https://www.haomeiwen.com/subject/fauuottx.html