Can I pass a block which itself expect a block to instance_exec in ruby?
block, proc, ruby
Solution
`&foo` tries to pass `foo` as a block to `instance_exec`, and you are already passing an explicit block. Omitting ampersand sends `foo` just like any other argument (except that it is a `Proc` instance). So, try this instead:
instance_exec(1,2,3,foo) do |*args, block|
puts *args
block.call
puts "bar"
end
This also means that you can do something like:
bar = proc{ |*args, block|
puts *args
block.call
puts "bar"
}
instance_exec(1,2,3,foo,&bar)
And get the same result.
More info at Difference between block and &block in Ruby
Problem
I expect the code ``` foo=proc{puts "foo"} instance_exec(1,2,3,&foo) do |*args , &block| puts *args block.call puts "bar" end ``` to output ``` 1 2 3 foo bar ``` But got the error ``` both block arg and actual block given ``` Can I pass a block which itself expect a block to instance_exec in ruby?