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阅读相关推荐

  1. 3000门徒内部训练绝密视频(泄密版)第5课:彻底精通Scala隐式转换和并发编程及Spark源码阅读

    彻底精通Scala隐式转换和并发编程及Spark源码阅读 Akka ,Scala内部并发 隐式转换.隐式类.隐式参数 可以手动指定某种类型的对象或类转换成其他类型的对象或类.转换的原因是假设写好接口 ...

  2. 转:RSS阅读、社会化阅读与个性化阅读

    转自 望月的博客 RSS阅读.社会化阅读与个性化阅读 标签: flipboard,rss,zite,个性化阅读,社会化阅读,鲜果联播 Go to comemnt 自从传统RSS阅读器的代表Google ...

  3. Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)

    不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce. ...

  4. HBase编程 API入门系列之HTable pool(6)

    HTable是一个比较重的对此,比如加载配置文件,连接ZK,查询meta表等等,高并发的时候影响系统的性能,因此引入了"池"的概念. 引入"HBase里的连接池" ...

  5. 2016~2022 文字生成图像 Text to image(T2I)论文整理 阅读路线和阅读指南

    2016~2021 文字生成图像 Text to image(T2I)论文汇总 阅读路线和阅读指南 综述类 部分最新重要研究成果 发展与往年经典模型 综述类 1.Adversarial Text-to ...

  6. 电子护照阅读器|证件阅读机MEPR100+与MEPR100性能分析与差异化对比

    电子护照阅读器|证件阅读机MEPR系列是一款外形轻巧美观的证件识读设备,配备高清300万像素成像系统,采用OCR技术或RFID感应识别技术,可识别多种护照证件.可识读符合国际民航组织ICAO DOC ...

  7. Hadoop MapReduce编程 API入门系列之查找相同字母组成的字谜(三)

    找出相同单词的所有单词.现在,是拿取部分数据集(如下)来完成本项目. 项目需求 一本英文书籍包含成千上万个单词或者短语,现在我们需要在大量的单词中,找出相同字母组成的所有anagrams(字谜). 思 ...

  8. 阅读、仔细阅读、反复阅读每个开源框架自带的reference

    阅读.仔细阅读.反复阅读每个开源框架自带的reference 这一点是学习一个框架最最重要,也是最最一开始需要做的事情.不过事实上,无数的程序员对此并不在意.程序员总是以种种理由不仔细阅读refere ...

  9. 推荐一款聚合阅读软件: 阅读 3.0

    文章首发于个人公众号「阿拉平平」 需要资源的小伙伴可于公众号后台回复 阅读 获取. 相信大家平时多少会有看书的需求,一款好的阅读软件可以带来愉快的阅读体验,而糟糕的阅读软件则不乏弹窗广告以及臃肿无用的 ...

最新文章

  1. 【数据结构复习】(1)绪论
  2. Delphi中高级DLL的编写和调用
  3. Java实现插入排序及其优化 insertion sort
  4. java.util 找不到_java.util.MissingResourceException:找不到基本名...
  5. 如何用Chrome读懂网站监测Cookie
  6. .sh文件怎么写_typeScript 配置文件该怎么写?
  7. 电视领域“烧钱”不止,酷开为何反成赢家?
  8. Hug a developer today
  9. jedate插件的使用
  10. RDPWrap,win10家庭版最新配置文件支持termsrv10.0.18362.836
  11. Cronbach’s α?KMO系数?因子载荷?史上最易懂的问卷信效度分析教程!!!(SPSS和AMOS)
  12. 英语计算机手抄报图片大全,关于英语手抄报图片简单又整洁
  13. vue 动态修改页面的meta
  14. 详解meta-viewport标签中的width和initial-scale属性
  15. tabar被手机虚拟键挡住_bug_ _Popwindow被魅族手机自带虚拟键挡住完美解决
  16. excel宏计算机,excel宏教程_电脑基础知识_IT计算机_专业资料.doc
  17. 闲鱼链接搭建+完整版源码带后台
  18. matlab去除语音噪声,基于MATLAB的语音噪声处理及实现
  19. 三维电子沙盘虚拟数字沙盘开发教程第9课
  20. 易基因:m6A mRNA甲基化修饰调控CTNNB1促进肝母细胞瘤增殖的机制研究|Mol Cancer

热门文章

  1. 传统关系型数据库性能优化全攻略
  2. linux搭建redis
  3. JVM优化系列-Java对象引用与可触及强度
  4. LeetCode141-环形链表(Linked List Cycle)-Rust语言实现
  5. centos8下搭建gotk3(go语言gtk库) x86_64-w64-mingw32交叉编译环境
  6. C/C++笔试经典——链表倒序
  7. Keil 中的预处理命令const
  8. 想在研发群里装?先学会这几个排查K8s问题的办法
  9. 关于CMS垃圾回收器的几个问题
  10. JAVA中获得前一天的时间