[ruby] 호출 된 메소드`… ‘가 여기에 정의되어 있습니다.

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



답변

두 번째 경고는 무엇을 의미합니까? 첫 번째 경고와 관련이 있습니까?

텍스트가 두 줄로 분할 된 단일 경고가 있습니다. 문자 그대로 : args로 변환해야합니다 **args. 여기이 경고를 생성 한 호출이 있습니다. 여기에 편의를위한 정의가 있습니다 .


답변