19、Ruby元编程与闭包深入解析

Ruby元编程与闭包深入解析

1. self与词法作用域的基本规则

在Ruby中,有一些通用规则可以帮助我们跟踪 self 和词法作用域:
- 在类或模块作用域内, self 总是被设置为该类或模块。当使用 class module 关键字时,Ruby会创建一个新的词法作用域,并将该作用域的类设置为新的类或模块。
- 在方法(包括类方法)内部,Ruby会将 self 设置为该方法调用的接收者。

2. 元编程与闭包:eval、instance_eval和binding

在Ruby中,元编程和闭包密切相关。许多元编程构造也充当闭包,使其中的代码能够访问引用环境。下面我们将介绍三个重要的元编程特性。

2.1 eval方法

eval 方法是最纯粹形式的元编程。你将一个字符串传递给 eval ,Ruby会立即解析、编译并执行该代码。例如:

str = "puts"
str += " 2"
str += " +"
str += " 2"
eval(str)

这里我们动态构建了字符串 puts 2+2 并传递给 eval ,Ruby会对其进行求值。需要注意的是, eval 在调用它的相同上下文中计算新的代码字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值