callables/method_proc_blocks.rb
tests/_examples/callables/method_proc_blocks.rb in the metorex repository.
def entries_from(&block)
seen = []
block.call { |key, value| seen << [key, value] }
seen
end
class RateTable < Hash
def entries_seen = entries_from(&method(:each))
end
table = RateTable.new
table["shipping"] = 4
p(table.entries_seen)
p(entries_from(&{ "tariff" => 9 }.method(:each)))
def forward(amount, &block)
block.call(amount)
end
p(method(:forward).to_proc.call(3) { |amount| amount * 10 })
def pair_of(key, value) = [key, value]
begin
{ "tariff" => 9 }.each(&method(:pair_of))
rescue ArgumentError => error
p(error.message)
end
takes_block = ->(amount, &block) { block.call(amount) }
begin
takes_block.call
rescue ArgumentError => error
p(error.message)
end
Output:
[["shipping", 4]]
[["tariff", 9]]
30
"wrong number of arguments (given 1, expected 2)"
"wrong number of arguments (given 0, expected 1)"