• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

浅析rubymeta-class

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
uby meta-class 分析
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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c,php,ruby,python按行循环读取文件内容发布时间:2022-07-18
下一篇:
rubyandwatir中timeout类的用法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap