Ruby中的闭包、Proc对象与元编程
1. Ruby中的Proc对象与闭包
1.1 Proc对象的本质
在Ruby里,并没有 rb_lambda_t 这样的结构。实际上, lambda 关键字创建的是一个 proc 对象,它是传递给 lambda 或 proc 关键字的代码块的包装器。Ruby使用 rb_proc_t 这个C结构来表示 proc 对象。
def message_function
str = "The quick brown fox"
func = lambda do |animal|
puts "#{str} jumps over the lazy #{animal}."
end
str = "The sly brown fox"
func
end
function_value = message_function
function_value.call('dog')
1.2 闭包的概念
proc 对象是一种闭包,它包含一个函数以及该函数所引用或创建时的环境。这个环境是栈帧在堆中的持久副本。
1.3 Proc对象的结构
proc 对象是Ruby对象,包含与其他对象相同的信息,如 RBasi
超级会员免费看
订阅专栏 解锁全文
52

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



