【发布时间】:2012-07-19 22:49:01
【问题描述】:
来自 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 中作用域的工作原理?如果我调用从give_me_a_proc 返回的 Proc,它仍然可以访问其定义时间范围吗?
一旦我定义了 proc,这些值是否会变得固定,或者在 Foo 中所做的任何更改即使在定义之后也会传递到 Proc?
【问题讨论】:
标签: javascript ruby scope proc