Ruby 2.7 був щойно випущений, і він поставляється з цими новими попередженнями про "Розмежування позиційних та ключових аргументів" (див. Їхню публікацію ) Я пограв з ним і виявив, що є ще одне попередження, яке я не розумію.
Приклад:
def multiply(x:, y:)
x * y
end
args = { x: 2, y: 3 }
multiply(args)
# ./warning.rb:7: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
# ./warning.rb:1: warning: The called method `multiply' is defined here
Я думаю, що перше попередження про депресію ясне, але друге попередження The called method `multiply' is defined hereмене бентежить.
Що означає друге попередження? Це пов’язано з першим попередженням?
Обидва попередження зникають при додаванні **до виклику ( multiply(**args)).