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