I'm trying to define an operator that takes a block, like:
a << {puts "Action!"}
but the part in '{}' gets interpreted as a hash. Here's the sample code:
class Foo
def initialize(&proc)
@closure = proc
end
def assign(newVal = Proc.new)
@closure = newVal
end
def <<(newVal = Proc.new)
@closure = newVal
end
def callit
@closure.call
end
end
f= Foo.new { puts "Action!" }
f.callit #=> "Action!"
f.assign { puts "New Action!" }
f.callit #=> "New Action!"
f<< { puts "Latest Action!" }
SyntaxError: compile error
(irb):26: parse error
f << { puts "Latest Action!" }
^
from (irb):26
.... it seems as though the block being passed to '<<' is getting
interpreted as a hash while it isn't for the 'assign' method. Is there
anyway around this?
Phil