Ruby中self的作用

    Ruby中有一个奇怪的关键词self,这个关键词非常的灵活,在不同的场景下,self代表着不同的含义。

    学过C++的同学,可以这样理解,self其中的一个作用类似于C++类中的this指针的使用,表示的就是当前对象或者默认对象,类似于C++中的this指针,但是又不大相同。

this和self的区分:

      相同点:this指的是当前对象,然后self在类中方法中的含义也指的是当前对象。

      不同点:self的作用不仅只代表是当前对象,self的作用会依赖与self的上下文的作用,不同位置的self表示的含义是不相同的。

一、self的作用汇总表

Ruby中self的作用

(1)顶层作用(相当于在main函数中的作用):

Ruby中self的作用

(2)顶层方法时作用(相当于在main函数中被调用的函数的self作用):

Ruby中self的作用

备注:顶层上下文的self是main,顶层方法的self也是main。main是Object的一个对象。

(3)类中作用:(self是类对象本身)

Ruby中self的作用

(4)类中实例方法作用:(self表示是对象A)

Ruby中self的作用

(5)模块中self是模块的名字

Ruby中self的作用