methods/argument_forwarding.rb
tests/_examples/methods/argument_forwarding.rb in the metorex repository.
def target(a, b:, &block)
[a, b, block.call]
end
def forwards_all(...)
target(...)
end
p forwards_all(1, b: 2) { 3 }
def positional_target(a, b, c)
[a, b, c]
end
def forwards_rest(*)
positional_target(*)
end
p forwards_rest(1, 2, 3)
def keyword_target(a:, b:)
[a, b]
end
def forwards_keywords(**)
keyword_target(**)
end
p forwards_keywords(a: 1, b: 2)
def block_target(&block)
block.call
end
def forwards_block(&)
block_target(&)
end
p forwards_block { :done }
p 7.clamp(..5)
Output:
[1, 2, 3]
[1, 2, 3]
[1, 2]
:done
5