昨天,跟朋友review code,发现了一个hash_obj.collect写成了hash_obj.each.collect。就想对Hash有个简单的总结。

首先查看Hash的祖先。

Hash.ancestors #> [Hash, Enumerable, Object, Kernel, BasicObject]

找到Hash使用Mixin的方式include了Enumerable。Enumerable提供了一系列的方法,如each,collect,map,sort之类的。include了Enumerable的类只需要实现each就可以获得所有如collect, map, sort这样的方法。(当然sort比较特殊一点儿)。

当然Hash就直接有collect方法,而不需要调用hash_obj.each.collect。

实现一个例子:

class Kiwi

include Enumerable

def initialize(msg)

@msg = msg

end

def each

@msg.each { |msg| yield msg }

end

end

kiwi = Kiwi.new([1,2,3])

kiwi.collect {|num| num * 2} #=> [2, 4, 6]

Kiwi这个类就可以直接使用collect方法,因为它实现了each。

enumerable java_ruby中的Enumerable的使用相关推荐

  1. 整理一下 System.Linq.Enumerable 类中的那些比较少用的方法

    Linq 虽然用得多,但是里面有一些方法比较少用,因此整理一下.Enumerable 类的所有方法可以在 MSDN 上查阅到:https://msdn.microsoft.com/zh-cn/libr ...

  2. Linq中的Enumerable和Queryable

    前言 正文 使用场合不同 返回类型不同 传递参数不同 总结 前言 此文章延续自C#中Linq的使用 正文 上节讲到Linq可以通过查询方法来使用,Linq中有两个命名空间,分别是System.Linq ...

  3. LINQ Enumerable 续

    筛选序列 Enumerable.Distinct 对于复杂的对象列表,运行时引擎如何才能通过比较确定两个对象是否重复?对于复杂对象,必须提供一个比较器,即实现IEqualityComparer(Of ...

  4. C# Enumerable 类

    Enumerable 类 命名空间:  System.Linq 提供一组用于查询实现 IEnumerable<T> 的对象的 static(在 Visual Basic 中为 Shared ...

  5. Enumerable类

    Enumerable类中,提供一些开发中,使用频率非常高的方法.此类在System.Linq这个命名空间下. 比较常用的方法:ToList().ToDictionary().ToHashSet(). ...

  6. 技术图文:排序技术在求解算法题中的应用

    背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第五篇图文. 理论部分 C# 中的排序 对集合类的排序,我们通常使用位于 System.Core 程序集,System.Lin ...

  7. Ruby中的设计模式

    继续 上 节讲述过的Singleton . Proxy 及 Iterator各模式,本节再来考察几个别的设计模式.下面按顺序来考察 Prototype . Template Method 和 Obse ...

  8. 使用LINQ更新集合中的所有对象

    有没有办法使用LINQ执行以下操作? foreach (var c in collection) {c.PropertyToSet = value; } 为了澄清,我想遍历集合中的每个对象,然后更新每 ...

  9. LINQ学习中需要明确的几点问题

    LINQ技术实际包括LINQ(对象操作).DLINQ((数据操作).XLINQ(Xml操作)三种技术   1.LINQ要解决的问题 长期以来,开发社区形成以下格局: 面向对象与数据访问两个领域长期分裂 ...

最新文章

  1. NSight Compute 用户手册(上)
  2. NO.72 参与项目管理、演示和总结
  3. Spark Run本地设计模式
  4. java正则表达式非贪婪_正则表达式中的贪婪与非贪婪匹配模式
  5. Mac os安装SEAL
  6. P1589 - 【NOI2009】植物大战僵尸
  7. Google Code Review在代码审查中寻找什么
  8. 百科知识 画法几何创造性思维训练
  9. win7 计算机定时关机脚本,Win7定时关机命令 win7系统怎么设置定时关机
  10. 数据库表数据怎么恢复数据_恢复糟透了。 这是数据。
  11. CSS实现炫酷动画背景
  12. 英文ppt怎么翻译成中文?教你几种ppt翻译方法
  13. 几行代码就能去除图像和视频背景,还用啥PS
  14. 大数据分析助迈凯轮车队角逐F1
  15. GitHub 又又又多了一个新主题 —— Dimmed Dark 主题!
  16. 服务器容器化-docker(全)
  17. 仓储委外加工/周转加工
  18. Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)
  19. 创建C++字符串最常用的五种方法,难吗?有手就行!
  20. BOGNER博格纳中国首家限时精品店即将开幕

热门文章

  1. [debug] Expected to have finished reduction in the prior iteration before starting a new one.
  2. [Python] np.array() 创建ndarray类型的数组
  3. Tornado请求分析request, 获取请求参数
  4. hls和modelsim联合仿真生成波形找不到wlf文件
  5. 贺利坚老师汇编课程66笔记:自定义除法中断学习如何编制中断程序
  6. Linux系统安全之pam后门安装使用详解
  7. 6. 添加权限管理模块
  8. 在配置文件web.xml中配置Struts2的启动信息
  9. ASP.NET 实现上传EXCEL,利用NOPI操作,转换得到DataTable
  10. javascript字符串的方法