来自 JavaScript 背景,我已经习惯于使用 JavaScript 的动态范围将值封装在函数中。例如:
function Dog( firstname, lastname ) {
this.fullname = firstname + lastname
return {
say_name: function () {
return fullname;
}
}
}
现在在 Ruby 中,我不太确定这样的事情是否会很好地工作:
class Foo
attr_accessor :bar, :baz
def initialize bar, baz
@bar = bar
@baz = baz
end
def give_me_a_proc
return Proc.new { @bar + @baz }
end
end
任何人都可以快速解释范围在 Ruby 中的工作原理吗?如果我调用从返回的 Proc give_me_a_proc
,它是否仍然可以访问其定义时间范围?
一旦我定义了proc,这些值是否会变得固定,或者Foo
即使在定义proc之后,所做的任何更改也会传递到Proc?