ruby编程API阅读之BasicObject阅读
BasicObject是ruby中所有类的父类。
一、BasicObject提供的实例方法
BasicObject提供的方法较少,我在文章中只记录一些要点。
1. == 与eql?同为BasicObject提供的实例方法,但用法上稍有不同。
1 == 1.0 #=> true1.eql? 1.0 #=> false
2. send方法,下面为send方法的例子。
class Klassdef hello(*args) "Hello " + args.join(' ') endendk = Klass.newk.send :hello, "gentle", "readers" #=> "Hello gentle readers"
send为ruby中的实例提供了动态调用方法的可能,实在是元编程的利器。
3. instance_eval && instance_exc
这两个方法的作用都是将对象的作用域撕开,将方法后所跟的块的self变成对象的上下文环境。所不同的是instance_exc可以向块内传递参数。
二、 BasicObject提供的私有方法
1. method_missing方法
method_missing方法被用来处理对象调用方法不存在时的情况,如果在对象类中覆写method_missing,那么可以达到意想不到的效果。使用起来较难。
2.singleton_method_added方法
当一个单例方法添加到一个接受者之后,singleton_methdo_added方法会被当作反馈被调用。
module Chattydef Chatty.singleton_method_added(id) puts "Adding #{id.id2name}"enddef self.one() enddef two() enddef Chatty.three() endend###Adding singleton_method_added##Adding oneAdding three
下面还有singleton_method_removed 和 singleton_method_undefined 方法,和本方法用法相同。我们可以通过示例代码体会一下class << self .... end 的用法。
module Chattydef Chatty.singleton_method_removed(id) puts "Removing #{id.id2name}"enddef self.one() enddef two() enddef Chatty.three() endclass << selfremove_method :threeremove_method :oneendend
转载于:https://blog.51cto.com/3624571/1562277
ruby编程API阅读之BasicObject阅读相关推荐
- 3000门徒内部训练绝密视频(泄密版)第5课:彻底精通Scala隐式转换和并发编程及Spark源码阅读
彻底精通Scala隐式转换和并发编程及Spark源码阅读 Akka ,Scala内部并发 隐式转换.隐式类.隐式参数 可以手动指定某种类型的对象或类转换成其他类型的对象或类.转换的原因是假设写好接口 ...
- 转:RSS阅读、社会化阅读与个性化阅读
转自 望月的博客 RSS阅读.社会化阅读与个性化阅读 标签: flipboard,rss,zite,个性化阅读,社会化阅读,鲜果联播 Go to comemnt 自从传统RSS阅读器的代表Google ...
- Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)
不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce. ...
- HBase编程 API入门系列之HTable pool(6)
HTable是一个比较重的对此,比如加载配置文件,连接ZK,查询meta表等等,高并发的时候影响系统的性能,因此引入了"池"的概念. 引入"HBase里的连接池" ...
- 2016~2022 文字生成图像 Text to image(T2I)论文整理 阅读路线和阅读指南
2016~2021 文字生成图像 Text to image(T2I)论文汇总 阅读路线和阅读指南 综述类 部分最新重要研究成果 发展与往年经典模型 综述类 1.Adversarial Text-to ...
- 电子护照阅读器|证件阅读机MEPR100+与MEPR100性能分析与差异化对比
电子护照阅读器|证件阅读机MEPR系列是一款外形轻巧美观的证件识读设备,配备高清300万像素成像系统,采用OCR技术或RFID感应识别技术,可识别多种护照证件.可识读符合国际民航组织ICAO DOC ...
- Hadoop MapReduce编程 API入门系列之查找相同字母组成的字谜(三)
找出相同单词的所有单词.现在,是拿取部分数据集(如下)来完成本项目. 项目需求 一本英文书籍包含成千上万个单词或者短语,现在我们需要在大量的单词中,找出相同字母组成的所有anagrams(字谜). 思 ...
- 阅读、仔细阅读、反复阅读每个开源框架自带的reference
阅读.仔细阅读.反复阅读每个开源框架自带的reference 这一点是学习一个框架最最重要,也是最最一开始需要做的事情.不过事实上,无数的程序员对此并不在意.程序员总是以种种理由不仔细阅读refere ...
- 推荐一款聚合阅读软件: 阅读 3.0
文章首发于个人公众号「阿拉平平」 需要资源的小伙伴可于公众号后台回复 阅读 获取. 相信大家平时多少会有看书的需求,一款好的阅读软件可以带来愉快的阅读体验,而糟糕的阅读软件则不乏弹窗广告以及臃肿无用的 ...
最新文章
- 【数据结构复习】(1)绪论
- Delphi中高级DLL的编写和调用
- Java实现插入排序及其优化 insertion sort
- java.util 找不到_java.util.MissingResourceException:找不到基本名...
- 如何用Chrome读懂网站监测Cookie
- .sh文件怎么写_typeScript 配置文件该怎么写?
- 电视领域“烧钱”不止,酷开为何反成赢家?
- Hug a developer today
- jedate插件的使用
- RDPWrap,win10家庭版最新配置文件支持termsrv10.0.18362.836
- Cronbach’s α?KMO系数?因子载荷?史上最易懂的问卷信效度分析教程!!!(SPSS和AMOS)
- 英语计算机手抄报图片大全,关于英语手抄报图片简单又整洁
- vue 动态修改页面的meta
- 详解meta-viewport标签中的width和initial-scale属性
- tabar被手机虚拟键挡住_bug_ _Popwindow被魅族手机自带虚拟键挡住完美解决
- excel宏计算机,excel宏教程_电脑基础知识_IT计算机_专业资料.doc
- 闲鱼链接搭建+完整版源码带后台
- matlab去除语音噪声,基于MATLAB的语音噪声处理及实现
- 三维电子沙盘虚拟数字沙盘开发教程第9课
- 易基因:m6A mRNA甲基化修饰调控CTNNB1促进肝母细胞瘤增殖的机制研究|Mol Cancer