Ruby 2.7 vừa được phát hành và đi kèm với những cảnh báo mới này về "Tách các đối số từ khóa và vị trí" (xem Bài đăng phát hành của họ ). Tôi đã chơi xung quanh nó và phát hiện ra rằng có một cảnh báo khác, mà tôi không hiểu.
Thí dụ:
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
Tôi nghĩ rằng cảnh báo đầu tiên về sự phản đối là rõ ràng, nhưng cảnh báo thứ hai The called method `multiply' is defined here
là khó hiểu với tôi.
Cảnh báo thứ hai có ý nghĩa gì? Có liên quan đến cảnh báo đầu tiên?
Cả hai cảnh báo đều biến mất khi thêm **
vào cuộc gọi ( multiply(**args)
).