ruby元编程第二版 学习 - 当前类

2018-06-03  本文已影响16人  SecondRocker

15年某次写代码时发现类的instance_eval 里 用 define_method 定义的不是实例方法,而是类方法;当时查了下资料,了解到当前类https://www.jianshu.com/p/xqbKUX(当时简书说随后查下当前类的用法,然而三年过去了..。鄙视下自己!),但一直不太清晰;最近看了ruby元编程第二版,当前类基本弄明白了。

不管处在ruby程序的哪个位置,总存在一个当前对象:self。同样,也总是有一个当前类(或模块)存在。定义一个方法时,那个方法将成为当前类的一个实例方法。
我们可以用self获取当前对象,但是ruby并没有相应的的方式来获取当前类的引用。不过,跟踪当前类并不困难,我们可以查看源代码。

class C
  def m1
    def m2;end
  end
end
C.instance_methods(false) #[:m1,:2]

当前类只影响def 定义的方法归属(截止目前的认知)

def定义的方式是当前类的实例方法

已知有三种方法改变当前类

上一篇 下一篇

猜你喜欢

热点阅读