初学者 Ruby 问题。更改此代码的最简单方法是什么,但保持块完全不变,从而消除副作用?
x = lambda { |v| x = 2 ; v}
x.call(3)
#=> 3
x
#=> 2
这是我可以设法说明我的问题的最简单的示例,因此“删除分配”或“不要将 Proc 分配给 x”不是我想要的。
我想在 Proc(或 lambda)中设置可以在不影响原始封闭范围的情况下分配的局部变量。我可以动态创建一个类或模块来包装块,但这对于这样一个基本的东西来说似乎有点过分了。
相当于我正在尝试做的Python:
def x(v):
x = 2 # this is a local variable, what a concept
return v