You can write methods of your own to handle code blocks. For example:
def each_vowel(&code_block) %w{a e i o u}.each { |vowel| code_block.call(vowel) } end # from w w w.j ava 2 s . c o m each_vowel { |vowel| puts vowel }
each_vowel is a method that accepts a code block.
The code block is marked by ampersand (&) before the variable name code_block in the method definition.
It then iterates over each vowel in the literal array %w{a e i o u} and uses the call method on code_block to execute the code block once for each vowel.
You can use the yield method to detect any passed code block:
def each_vowel %w{a e i o u}.each { |vowel| yield vowel } end # from w w w. j a v a2s . c o m each_vowel { |vowel| puts vowel }