RubyRuby、Rails知识

Ruby元编程笔记——1.对象模型

2017-12-15  本文已影响10人  CharlesZhangCh

打开类

在Ruby中,定义类的语句和其他语句没有本质区别,你可以在类定义中放置任何语句。

class C
  puts "Hello"
end
=> Hello

Ruby的class关键字更像是一个作用域操作符而不是类型声明语句。你总是可以重新打开已经存在的类并对它进行动态修改。

class D
  def x
    puts 'x'
  end
end

class D
  def y
    puts 'y'
  end
end

obj = D.new
obj.x            # => x
obj.y            # => y

类的真相

对象中有什么

实例变量

instance_variables

方法

methods

类自身也是对象


常量

任何以大写字母开头的引用(包括类名和模块名),都是常量。

方法查找

向右一步,再向上


image.png

当你在一个类中包含一个模块时,Ruby创建了一个封装该模块的匿名类,并把这个匿名类插入到祖先链中,其在链中的位置正好包含在她的类上方。


包含模块的方法查找

执行方法

每一行代码都会在一个对象中被执行——这个对象就是所谓的当前对象。当前对象也可以用self表示。
当开始运行Ruby程序时,Ruby解释器会创建一个名为main的对象作为当前对象,这个对象有时被称为顶级上下文(top level context)。
在类和模块定义中(并且在任何方法定义之外),self的角色由这个类或模块担任:

class MyClass
  self           # => MyClass
end

小结

上一篇下一篇

猜你喜欢

热点阅读