如何取得定义类Ruby metaclass
大家通过对Ruby语言的深入学习可以清楚的知道,它是一款完全面向对象的脚本语言。对于程序员来说,对象是属于世间万物的。那么类呢?在这里我们就为大家讲解一下Ruby metaclass这个定义类的具体含义。
1 对象存储数据,类存储方法。就是说,对象保存属于这个对象的数据,这样每个对象间的数据是独立的,各有各的存储空间,方法在内存中只有一份,就是由类保存。
2 什么是Ruby metaclass,简单来说就是,首先他是一个类,他是一个特殊的类,他描述的不是人,也不是飞机,是另外的一个类。
当Ruby 处理下面代码后,我们得到Person对象,它是Class类的实例
class Person attr_accessor :age,:name def initialize(age,name) @namename = name @ageage = age end end
Class 也是一个对象,那么上面说对象中只存储数据,那么又如何解释呢?
只有查看Ruby的源代码,ruby是用C语言写的,里面的对象简单来说就是一些数据结构。
对于Class的对象,有一个m_tbl成员,从名字可见是一个方法表。可见Class对象要比一般的对象特别。
struct RObject { struct RBasic basic; struct st_table *iv_tbl; }; struct RClass { struct RBasic basic; struct st_table *iv_tbl; struct st_table *m_tbl; VALUE super; };
3 如何取得定义类的Ruby metaclass呢?最简单的两个方法,类名即是这个Class的metaclass.也可以能过类实例的.class方法。
相关推荐
Noneyes 2020-11-10
huavhuahua 2020-11-20
weiiron 2020-11-16
ailxxiaoli 2020-11-16
cakecc00 2020-11-15
千锋 2020-11-15
JakobHu 2020-11-14
chensen 2020-11-14
Nostalgiachild 2020-11-13
guangcheng 2020-11-13
zhangxiafll 2020-11-13
jipengx 2020-11-12
xirongxudlut 2020-11-10
solarLan 2020-11-09
pythonxuexi 2020-11-08
文山羊 2020-11-07
susmote 2020-11-07
wuShiJingZuo 2020-11-05
Pythonjeff远 2020-11-06