A
Andrew Wagner
[Note: parts of this message were removed to make it a legal post.]
Hi all.
I'm writing a method which takes a block and returns a lambda which will
execute that block when called. Here's the code:
def foo &block
Proc.new { yield }
end
a = foo { 3 }
puts a
This returns something like #<Proc:[email protected]:2 (lambda)>. That's
all well and good, but what I'd really like is for that line number to show
up as 5, since that's where the block is actually defined. So I try this:
def foo &block
a = Proc.new { yield }
def a.to_s
block.to_s
end
a
end
a = foo { 3 }
puts a
But here, ruby tells me that 'block' is undefined inside a's to_s. It's
clearly not creating the closure I'd hoped for. I've played around with a
few variations, but can't seem to get it to do what I want. Suggestions?
Hi all.
I'm writing a method which takes a block and returns a lambda which will
execute that block when called. Here's the code:
def foo &block
Proc.new { yield }
end
a = foo { 3 }
puts a
This returns something like #<Proc:[email protected]:2 (lambda)>. That's
all well and good, but what I'd really like is for that line number to show
up as 5, since that's where the block is actually defined. So I try this:
def foo &block
a = Proc.new { yield }
def a.to_s
block.to_s
end
a
end
a = foo { 3 }
puts a
But here, ruby tells me that 'block' is undefined inside a's to_s. It's
clearly not creating the closure I'd hoped for. I've played around with a
few variations, but can't seem to get it to do what I want. Suggestions?