ruby map迭代简洁写法实现原理分析
2017-03-23 14:16
267 查看
主要介绍了ruby迭代map的简洁写法实现原理分析
map简便的方法写法 举个例子:现在有一个字符串数组,需要把其中的字符串都转化为大写 array = ["first","second"] array.map(&:upcase) 其实上面的写法等同于下面的写法 array.map{|obj| obj.upcase} 写法很简单,看看实现的原理 &符号做了什么? 1.触发p的to_proc方法。 2.告诉Ruby解释器,将to_proc方法返回的结果当做本次函数调用的block。 &:upcase是什么? 知道了&符号的作用后,我们可以看到,&:upcase是先调用了:upcase对象的to_proc方法。 :upcase的to_proc方法实现如下: class Symbol def to_proc Proc.new {|obj| obj.send(self) } end end 这下结果就很清楚了,Symbol#to_proc会返回一个带参数的Proc对象,Proc对象所做的是为使用这个Proc对象的对象发送调用名字为该符号的方法。
相关文章推荐
- ruby迭代map的简洁写法实现原理分析
- Internetmap.apk实现原理分析
- [原创] 用Delphi实现控制IE窗体的大小——IESizer程序原理分析 (2003-12)
- Hibernate实现分页查询的原理分析
- ASP文件上传原理分析及实现实例
- ASP实现图片上传原理分析及示例
- 深入分析基于VCL派生的ActiveX控件的实现原理及应用
- 一个小语言的词法分析程序原理及其实现(2)
- asp.net中利用ashx实现图片防盗链的原理分析
- 也谈WEB打印(二):简单的分析一下IE的打印原理并实现简单的打印和预览
- 也谈WEB打印(二):简单的分析一下IE的打印原理并实现简单的打印和预览
- MAP原理及其在MFC中的实现
- IronPython for ASP.NET 的原理分析(一):如何在 CLR 类型上实现动态性
- 线性方程数值分析中高斯迭代matlab实现
- 简略的分析一下Anthem无刷新控件的实现原理和流程
- ARP欺骗技术实现原理分析
- 循环中删除map元素的写法; 在C++环境下,实现一行一行地读入文本文档
- MAP原理及其在MFC中的实现
- MFC工具条和状态栏,内部实现原理详细分析