赞 | 274 |
VIP | 0 |
好人卡 | 3 |
积分 | 496 |
经验 | 40966 |
最后登录 | 2024-9-22 |
在线时间 | 1920 小时 |
Lv5.捕梦者
- 梦石
- 10
- 星屑
- 39587
- 在线时间
- 1920 小时
- 注册时间
- 2010-11-14
- 帖子
- 3320
|
本帖最后由 KB.Driver 于 2020-3-23 16:08 编辑
class << obj
# code
end
这个是"打开类"操作,"class <<"是打开类操作符
打开类可以为被打开的对象定义单例方法,也可以读取对象内部的变量、常量。
如果不想深究元编程的话,知道这么多就够了。
——分割线——
从不严谨的角度来说,打开类操作和class_eval(module_eval)有点类似
只不过一个是标准语法,一个是接收块作为参数的方法
打开类的本质是进入一个新的作用域,该作用域的self变为被打开对象的单例类
因此在这里定义的方法就会变成对象的单例方法。
打开类的应用场景一般有这几个:
1、类方法或模块方法需要使用环绕别名时,需要打开类后再使用别名
2、为任意对象(类和模块也是对象)定义单例方法(在单例内里使用include就是这样的技巧之一)
3、读取对象内部作用域的变量
|
评分
-
查看全部评分
|