來自JavaScript後臺我已經習慣於能夠使用JavaScript的動態範圍來封裝函數中的值。例如:Ruby scope,從函數返回一個Proc
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
中做出的更改,即使在定義之後,這些值也會被固定下來。
謝謝,這正是我正在尋找的那種解釋 – 2012-07-20 16:55:01
歡迎。感謝您的反饋。你扔掉這些東西,你想知道它是否達到了標準。 :) – seph 2012-07-20 22:35:09