methods/yield_in_default_value.rb
tests/_examples/methods/yield_in_default_value.rb in the metorex repository.
def each_doubled(transform = proc { |value| yield value * 2 })
[1, 2, 3].map { |value| transform.call(value) }
end
p each_doubled { |value| value + 1 }
p each_doubled(proc { |value| value })
def first_given(value = yield)
value
end
p first_given { :from_the_block }
p first_given(:passed)
def block_from_default(given = block_given?, &block)
given
end
p block_from_default {}
p block_from_default
Output:
[3, 5, 7]
[1, 2, 3]
:from_the_block
:passed
true
false