Ruby's blocks and scope
Working with some kind of yield is each time a bit abstract.
And this time it was the scope that got me good…
def tetris
long_block = "4x1"
cube = "4x4"
yield
end
# this raises a NameError
# the variables defined in tetris
# are not available to the block
tetris do
long_block + cube
end
fixing scope by passing the needed parts around with the block:
def tetris
long_block = "4x1"
cube = "4x4"
yield(long_block, cube)
end
tetris do |long_block, cube|
long_block + " " + cube
end
⬅️ Read previous Read next ➡️