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

2016-10-19 10:34:21 +08:00
 rockllei

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 的最新系列大课程<Ruby 元编程="">已经开坑了,从今天开始会陆续更新,第一节视频课件<Ruby 元编程的介绍和使用场景="">已经放出,免费的, http://eggman.tv/c/s-ruby-meta-programming ,计划每周更新两期,上面讲述的是课件一部分内容,我们计划会在整个课件中为大家讲述:

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

6058 次点击
所在节点    Ruby
4 条回复
rockllei
2016-10-24 16:23:43 +08:00
看来技术贴不受欢迎这里
franklinyu
2016-11-06 13:49:36 +08:00
@rockllei 只是 Ruby 節點人少吧
franklinyu
2016-11-06 13:51:00 +08:00
@rockllei 而且你這明明是廣告……
rockllei
2016-11-08 11:02:28 +08:00
@franklinyu 我们比较软不硬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/313785

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX