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