Phương thức được gọi là '' 'được định nghĩa ở đây


13

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 herelà 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)).


1
Bất cứ ai cũng biết làm thế nào để đàn áp những cảnh báo này? Tôi có những cảnh báo phản đối ghi vào tệp nhật ký, nhưng nó không ảnh hưởng đến những cái này. Chạy thông số kỹ thuật là một cơn ác mộng trong ruby ​​2.7.0
Carl

Câu trả lời:


15

Cảnh báo thứ hai có ý nghĩa gì? Có liên quan đến cảnh báo đầu tiên?

Có một cảnh báo duy nhất với một văn bản được chia thành hai dòng. Nó có nghĩa đen là: argsnên được chuyển đổi thành **args, đây là cuộc gọi tạo ra cảnh báo này, đây là định nghĩa của nó để thuận tiện cho bạn .


5
Rất vui, cảm ơn bạn! Có thể đó chỉ là tôi, nhưng điều này khá khó hiểu ...
lxxxvi

2
@lxxxvi Không chỉ bạn. Tôi đã đến đây vì chính xác điều tương tự - nếu đó là một thông báo lỗi, tôi cảm thấy như đó là một thông báo lỗi.
Jacob

Tôi thực sự bối rối, tôi thấy cảnh báo này và không có gì ở trên nó cho i18n.rb, đây là cảnh báo một dòng, dòng trên liên quan đến hỗ trợ tích cực. Tôi phải làm gì về cảnh báo này? </Usr/local/lib/ruby/gems/2.7.0/gems/i18n-1.8.2/lib/i18n.rb:195: cảnh báo: Các phương pháp được gọi là `t' được định nghĩa ở đây
Hackeron
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.