在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
ruby core 文档对class , object 和 meta-class 的描述如下: Classes, modules, and objects are interrelated. In the diagram that follows, the vertical arrows represent inheritance, and the parentheses meta-classes. All metaclasses are instances of the class `Class’. 第一次看起来有点糊涂,让我们仔细的来分析一下。先说上面这个图吧 垂直箭头表示继承关系,括号中的(someclass)就是meta-classes,所有的meta-classes都是类Class的实例。 meta-classes是什么? 简单从一个例子说起吧 如果我们建立了一个Person类 irb(main):001:0> class Person irb(main):002:1> end => nil irb(main):003:0> 当ruby解释器执行上面代码,结束返回nil后,这时候我们就有了一个meta-class,叫Person,它是Class的一个实例 测试一下: irb(main):003:0> Person.class => Class 看来它是Class类的一个实例,从图上看它的祖先是Object那么它也应该有Object类的方法 instance_of?(class) 测试一下: irb(main):004:0> Person.instance_of?(Class) => true 哦,他果然是Class的实例。 再来看看meta-class (Object, Module, Class) irb(main):005:0> Class.class => Class irb(main):006:0> Module.class => Class irb(main):007:0> Object.class => Class irb(main):008:0> 可见ruby解释器加载时,就自动加载了Object类,Module类,Class类,所以己经生成了他们的meta-class |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论