“当一个singleton方法在这个接受者中没有定义(??)时,singleton_method_undefined作为回调函数会被调用”
这是书上P577页的说法,看看官网的原文:
Invoked as a callback whenever a singleton method is undefined in the receiver
再看代码:

 1module Chatty
 2     def Chatty.singleton_method_undefined(id)
 3       puts "Undefining #{id.id2name}"
 4     end
 5     def Chatty.one()   end
 6     class << self
 7        undef_method(:one)
 8     end
 9   end
10

查找关于 undef_method 的官网说明:

Prevents the current class from responding to calls to the named method. Contrast this with remove_method, which deletes the method from the particular class; Ruby will still search superclasses and mixed-in modules for a possible receiver.
《Programming Ruby 中文版第二版》P559页:
阻止当前类响应对这些给定方法的调用。这与remove_method形成鲜明对比;remove_method从这个特定的类中删除方法,而Ruby仍然会从它的超类和mixin的模块中寻找一个可能的接收者。
回到开头,is undefined 就不应该是“没有定义”了,而应该是“被undef_method方法调用后”。

ps:同样的错误可见p557页,关于method_undefined的说明

又ps:extended、method_undefined这两个方法在官网的文档中都没有说明,不知道是不是要发生什么变化?

转载于:https://www.cnblogs.com/bryanzk/archive/2007/07/27/833586.html

《Programming Ruby 中文版第二版》P577页singleton_method_undefined方法说明有点问题相关推荐

  1. EMC设计与测试案例分析郑军奇第二版 296页电磁兼容EMC超强书籍

    EMC设计与测试案例分析郑军奇第二版 296页 20.0M 高清书签版.pdf 电磁兼容(EMC)标准解析与产品整改实用手册 WSQ 电磁兼容(EMC)设计与测试之汽车电子产品 [陈立辉 主编] 20 ...

  2. Ruby.say_hello——Programming Ruby中文版序

    根据我的观察,习惯于Java或者C#的程序员在初初接触Ruby时,最能打动他们的往往就是像本文标题这样的一句代码:原本熟悉的字符串或者整数突然摇身一变,有了很多新的行为,甚至让整个Ruby语言都似乎变 ...

  3. 深入理解计算机系统(中文版第二版)

    下载地址:网盘下载 内容简介  · · · · · · 从程序员的视角,看计算机系统! 本书适用于那些想要写出更快.更可靠程序的程序员.通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更 ...

  4. matlab验证Ross随机过程(第二版)P19页的结果

    Ross书上的式子为: 下面用Matlab验证最终结果ΣPi,n 取n=2000进行验证,运行时间大概是两三分钟. 代码主要思路是: 先处理2<i<n-1的情况, 代码中分别用一个for循 ...

  5. OpenCV 3计算机视觉 Python语言实现(第二版) P72页人脸识别例子代码编译错误说明

    我是按照书上例子中的代码写的,但是还是出了一堆错误.所以以后练习编程一定要自己输入. 先说说书上的错误吧,我首先遇到的问题是这个 这个问题的解决方法是,能写在一行的代码不写两行,下一个 字面意思是没有 ...

  6. R语言必看推荐:R语言入门经典版(中文版)+R语言实战第二版(中文完整版)

    R语言入门经典(中文版)R for beginners R语言经典教材 第二版 适合初学者 作者:Emmanuel Paradis R 语言实战第二版(中文完整版) R语言实战(第2版)注重实用性,是 ...

  7. 《Python核心编程》第二版第36页第二章练习 -Python核心编程答案-自己做的-

    <Python核心编程>第二版第36页第二章练习 这里列出的答案不是来自官方资源,是我自己做的练习,可能有误. 2.21 练习 2-1. 变量,print和字符串格式化操作符.启动交互式解 ...

  8. 《Python核心编程》第二版第18页第一章练习 -Python核心编程答案-自己做的-

    <Python核心编程>第二版第18页第一章练习 这里列出的答案不是来自官方资源,是我自己做的练习,可能有误. 1.9 练习 1-1. 安装Python.请检查Python是否已经安装到你 ...

  9. Ruby编程语言(The Ruby Programming Language) 中文版

    Ruby编程语言(The Ruby Programming Language) 中文版 转载于:https://www.cnblogs.com/gavinhughhu/archive/2009/11/ ...

最新文章

  1. 优化mysql服务器硬件包括_MySQL优化之一:服务器硬件和操作系统
  2. solidity return data和revert/require的reason string的获得
  3. ArrayList删除的问题
  4. 如何成为Java开发工程师?
  5. 【Pytorch】谈谈我在PyTorch踩过的12坑
  6. 关于阿里云图标的使用 iconfont
  7. aspose.words生成pdf字体乱码为方框
  8. Matlab变压器励磁涌流,基于matlab电力变压器励磁涌流的分析和仿真.doc
  9. JS 平方 开方 笔记
  10. C语言 找数字,用(折半查找法或二分查找法)
  11. Oracle以甲乙丙丁来排列
  12. Win7系统自动关机设定让你更轻松
  13. 前度字符串转数组_leetcode每日一题
  14. flutter 相机加入mask(遮罩层)
  15. 快速图像旋转算法的c++实现
  16. 让人变年轻的特效怎么做?教你制作变年轻特效小妙招
  17. python 用tkinter 做一个简易番茄钟
  18. 用dom4j实现对象和xml文件的互相转换
  19. 【面试题】深复制与浅复制的区别
  20. laravel 系统服务-助手函数

热门文章

  1. MyBatis总结与复习
  2. CentOS6.4下安装xampp
  3. POJ2342-Anniversary party-树形DP入门
  4. AngularJs 基础教程​ —— Select(选择框)
  5. angular核心原理解析3:指令的执行过程
  6. 趋势型指标——MACD
  7. linux 下面安装 .sh 格式的软件
  8. Python爬虫-爬取扇贝单词(Xpath)
  9. gradlew 的https代理设定
  10. 基于AOP的事务管理与普通事务管理有什么区别?