Ruby 中 Singleton 方法的另一种理解方式
ruby吧
全部回复
仅看楼主
level 7
woa1989 楼主
Ruby中的Singleton方法是Ruby中一个重要的知识点,也是做Ruby元编程的一个重要技巧。 简单的说就是在Ruby中任何自定义类都是Class这个类的一个实例,所以Singleton方法其实就是一个实例所拥有的方法,比如:
a = "hi"def a.you "hi, you"enda.you
# => hi, you"hello".you #
=> undefined method 'you'
上面的a.you方法就是a这个字符串实例的Singleton Method。
同样如果拿我们最熟悉的类举例子的话就是:
class A def self.hi 'hi A' endendA.hi # => hi A
上面的定义方法所有的同学应该都知道,其实就是类方法的定义,在Ruby中类方法其实就是类的Singleton Method,就像上面说的因为A也是Class这个类的一个实例(通过A.class就可以知道),所以,其实上面的方法也可以这样定义:
class Aenddef A.hi 'hi A'endA.hi # => hi A
这样的话,就和上面字符串a的效果一样,就更容理解了。 所以关键是理解我们所定义的类也是Class这个类的一个实例,这是关键。
其实我想说的,下面才是关键,
2017年04月07日 05点04分 1
1