10

I can pass multiple parameters and at last one block parameter to method. But it shows error when i try to pass more than one block. I want to know how it can be done?

def abc(x, &a)
  x.times { a.call("hello") }
end

abc(3) {|a| puts "#{a} Sana"}
abc(1, &proc{|a| puts "#{a} Sana"})

But below definition gives error

def xyz(x, &a, &b)
  puts x
  a.call
  b.call
end
Sandip Ransing
  • 7,583
  • 4
  • 37
  • 48

1 Answers1

16

You can use Proc:

def xyz(x, a, &b)
  puts x
  a.call
  b.call
end

xyz(3, Proc.new { puts 'foo' }) { puts 'bar' }

# or simpler

xyz(3, proc { puts 'foo' }) { puts 'bar' }
Sony Santos
  • 5,435
  • 30
  • 41