Ruby Ruby 中 Singleton 方法的另一种理解方式

ccok · 发布于 2016年10月19日 · 747 次阅读
2781

Ruby中的Singleton方法是Ruby中一个重要的知识点,也是做Ruby元编程的一个重要技巧。 简单的说就是在Ruby中任何自定义类都是Class这个类的一个实例,所以Singleton方法其实就是一个实例所拥有的方法,比如:

a = "hi"

def a.you
  "hi,  you"
end

a.you # => hi, you

"hello".you # => undefined method 'you'

上面的a.you方法就是a这个字符串实例的Singleton Method。

同样如果拿我们最熟悉的类举例子的话就是:

class A
  def self.hi
    'hi A'
  end
end

A.hi # => hi A

上面的定义方法所有的同学应该都知道,其实就是类方法的定义,在Ruby中类方法其实就是类的Singleton Method,就像上面说的因为A也是Class这个类的一个实例(通过A.class就可以知道),所以,其实上面的方法也可以这样定义:

class A
end

def A.hi
  'hi A'
end

A.hi # => hi A

这样的话,就和上面字符串a的效果一样,就更容理解了。 所以关键是理解我们所定义的类也是Class这个类的一个实例,这是关键。


其实我想说的,下面才是关键,

蛋人网 http://eggman.tv 的最新系列大课程已经开坑了,从今天开始会陆续更新,第一节视频课件已经放出,免费的,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的进阶使用

等等众多深入内容的讲解,当然还包括众多的实例演示和如何使用这些高级技巧,欢迎各位大哥大嫂前来支持。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册