当我有以下方法时:
def n_times(thing)
lambda { |n| thing * n }
end
我这样称呼它:
x = [:a]
p1 = n_times(x)
x = [:b]
p p1.call(3) # => [:a, :a, :a]
x 不会改变,输出将是 [:a]。为什么?
当做类似 .pop 的事情时, x 将被改变:
x = [:a]
p1 = n_times(x)
x.pop
p p1.call(3) # => []
是因为 [:b] 是一个新对象吗?