忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 徽章 文库 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 3511 | 回复: 0

Ruby 中 Singleton 方法的另一种理解方式 [复制链接]

论坛徽章:
0
发表于 2017-04-07 13:54 |显示全部楼层
Ruby中的Singleton方法是Ruby中一个重要的知识点,也是做Ruby元编程的一个重要技巧。 简单的说就是在Ruby中任何自定义类都是Class这个类的一个实例,所以Singleton方法其实就是一个实例所拥有的方法,比如:
a = [color=rgb(187, 68, 6]"hi"def a.you  [color=rgb(187, 68, 6]"hi,  you"enda.you # => hi, you[color=rgb(187, 68, 6]"hello".you # => undefined method 'you'
上面的a.you方法就是a这个字符串实例的Singleton Method。
同样如果拿我们最熟悉的类举例子的话就是:
class A  def self.hi    [color=rgb(187, 68, 6]'hi A'  endendA.hi # => hi A
上面的定义方法所有的同学应该都知道,其实就是类方法的定义,在Ruby中类方法其实就是类的Singleton Method,就像上面说的因为A也是Class这个类的一个实例(通过A.class就可以知道),所以,其实上面的方法也可以这样定义:
class Aenddef A.hi  [color=rgb(187, 68, 6]'hi A'endA.hi # => hi A
这样的话,就和上面字符串a的效果一样,就更容理解了。 所以关键是理解我们所定义的类也是Class这个类的一个实例,这是关键。

其实我想说的,下面才是关键,
蛋人网 [color=rgb(0, 105, 214) !important]http://eggman.tv 的最新系列大课程已经开坑了,从今天开始会陆续更新,第一节视频课件已经放出,免费的,[color=rgb(0, 105, 214) !important]http://eggman.tv/c/s-ruby-meta-programming ,计划每周更新两期,上面讲述的是课件一部分内容,我们计划会在整个课件中为大家讲述:
  • Ruby基础类结构
  • Module Mixin设计模式
  • instance_eval和class_eval的使用,以及_eval类和_exec类的区别
  • Singleton方法的原理和各种使用场景
  • ActiveSuppot::Concern的实现原理
  • define_method & method_missing
  • Block的进阶使用
等等众多深入内容的讲解,当然还包括众多的实例演示和如何使用这些高级技巧,欢迎各位大哥大嫂前来支持。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP