赞 | 0 |
VIP | 0 |
好人卡 | 1 |
积分 | 1 |
经验 | 167035 |
最后登录 | 2013-9-15 |
在线时间 | 57 小时 |
Lv1.梦旅人 风之塞尔达
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 57 小时
- 注册时间
- 2005-10-22
- 帖子
- 2492
|
alias 创建一个新的函数 基于原来函数的拷贝
alias name def # 设 name def 方法名
其实就是函数连接
ruby会根据提供的函数名找到该函数(该过程会判断函数是模块还是类还是单一的)
orig = search_method(xxx, def, xxx)
ruby函数(orig)是一个结构体, 包含着函数的函数体(nd_body),函数段个数(nd_cnt)和连接规则
设置nd_body属性(应该是指向一个ruby函数的各个函数段)
body = orig->nd_body;
orig->nd_cnt++;
if (nd_type(body) == NODE_FBODY) { /* was alias */
def = body->nd_mid;
origin = body->nd_orig;
body = body->nd_head;
}
最后进行测试, 然后插入类的函数表中
以上只是个人YY, 有兴趣自己去看源码 = = |
|