Ruby Ruby Blocks Blocks Practice Build a Monster Class: Part 4

Shoko Ishigaki
Shoko Ishigaki
21,825 Points

yield and

I watched all the videos in this course and checked relevant questions, but I'm still not sure the difference between use of yield and

yield self if block_given?

Can someone help me understand the difference between these codes? Thanks in advance!

1 Answer

Jay McGavren
Jay McGavren
Treehouse Teacher

There basically is no difference, except that yield implicitly calls the block without you having to store it in a variable first. So these are mostly equivalent:

def implicit_block
  puts yield

def explicit_block(&block)

implicit_block { 3 } # Prints "3"
explicit_block { 4 } # Prints "4"

But, to me, the implicit_block style seems a little more convenient in this case.