functions/anonymous_parameter_forwarding_no_parens.rb
tests/_examples/functions/anonymous_parameter_forwarding_no_parens.rb in the metorex repository.
def target *args, **options, &given
[args, options, given.nil?].inspect
end
def forward_rest(*)
target(*)
end
puts forward_rest 1, 2
def forward_keywords(**)
target(**)
end
puts forward_keywords a: 1
def forward_block(&)
target(&)
end
puts forward_block { :ignored }
def forward_everything(...)
target(...)
end
puts forward_everything 1, a: 2
["*", "**", "&"].each do |anonymous|
begin
eval "def outer(#{anonymous}); proc { |#{anonymous}| target(#{anonymous}) }; end"
puts "no error"
rescue SyntaxError => refused
puts refused.message.include? "also used within block"
end
end
Output:
[[1, 2], {}, true]
[[], {a: 1}, true]
[[], {}, false]
[[1], {a: 2}, true]
true
true
true