高级 Ruby 特性全解析
动态代码执行
Ruby 作为一种动态解释型语言,具备动态执行代码的能力,这主要通过 eval 方法实现。以下是一些示例:
eval "puts 2 + 2"
# 输出 4,但整个 eval 表达式不返回 4,因为 puts 总是返回 nil
puts eval("2 + 2")
# 输出 4
更复杂的例子,使用字符串和插值:
my_number = 15
my_code = %Q{#{my_number} * 2}
puts eval(my_code)
# 输出 30
eval 方法会执行传入的代码并返回结果。
绑定(Bindings)
在 Ruby 中,绑定是对执行上下文、作用域或状态的引用,包含变量的当前值等执行环境的详细信息。可以将绑定传递给 eval ,让 eval 在该绑定的上下文中执行代码,而不是当前上下文。示例如下:
def binding_elsewhere
x = 20
return binding
end
remote_binding = binding_elsewhere
x = 10
eval("puts x")
eval("puts x", remote_binding)
# 输出 10 和
超级会员免费看
订阅专栏 解锁全文
1128

被折叠的 条评论
为什么被折叠?



