KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Beginner Ruby question. What is the simplest way to change this code, but leaving the block completely intact , that eliminates the side effect? x = lambda { |v| x = 2 ; v} x.call(3) #=> 3 x #=> 2 This is the simplest example I could contrive to illustrate my issue, so "remove the assignment" or "don't assign the Proc to x" is not what I'm looking for. I want to set local variables in a Proc (or lambda) that can be assigned without affecting the original enclosing scope. I could dynamically create a class or module to wrap the block, but that seems overkill for such a basic thing. Equivalent Python to what I'm trying to do: def x(v): x = 2 # this is a local variable, what a concept return v
Tags (comma-separated)
Save Edits
Cancel