callables/method_proc_blocks_no_parens.rb
tests/_examples/callables/method_proc_blocks_no_parens.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]
end
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)"