您的位置:首页 > 其它

Perl 内部结构详解 -- PerlGuts Illustrated (1)

2012-07-31 13:59 155 查看
首先看一下Perl data structure。Perl内部称为SV(scalar value), AV(array value), HV(hash value), 此外IV代表integer, NV代表double, PV代表string, RV代表指针,指向另外的任意数据结构。

Perl内部的数据结构之间的关系很像OO,用C structure内存裁减的方式模拟C++的继承。各种结构之间的继承关系如下图所示,它们之间是IS-A(是一个)的关系。



正如图所见,Perl使用以SvNULL为虚拟基类的多重继承,所有的类型都是根据type(small number)来确定并标记,因此你可以获取一个object的数据类型并且执行相应的操作。

下边为类型type 的定义,相应的解释分析见随后的blog:

typedef enum {
SVt_NULL,	/* 0 */
SVt_IV,		/* 1 */
SVt_NV,		/* 2 */
SVt_RV,		/* 3 */
SVt_PV,		/* 4 */
SVt_PVIV,	/* 5 */
SVt_PVNV,	/* 6 */
SVt_PVMG,	/* 7 */
SVt_PVBM,	/* 8 */
SVt_PVLV,	/* 9 */
SVt_PVAV,	/* 10 */
SVt_PVHV,	/* 11 */
SVt_PVCV,	/* 12 */
SVt_PVGV,	/* 13 */
SVt_PVFM,	/* 14 */
SVt_PVIO,	/* 15 */
SVt_LAST	/* keep last in enum. used to size arrays */
} svtype;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: