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


13

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


1
아무도 이러한 경고를 억제하는 방법을 알고 있습니까? 로그 파일에 쓰는 사용 중단 경고가 있지만 이러한 파일에는 영향을 미치지 않습니다. 러닝 스펙은 루비 2.7.0에서 악몽이다
Carl

답변:


15

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

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


5
감사합니다! 그것은 단지 나
일지도

2
@lxxxvi 당신 만이 아닙니다. 나는 똑같은 것을 위해 여기에 왔습니다. 하나의 오류 메시지라면 하나의 오류 메시지가되어야한다고 생각합니다.
야곱

나는 정말로 혼란스러워, 나는이 경고를 보았고 i18n.rb에 대한 위에는 아무것도 없습니다. 이것은 단선 경고입니다. 위의 선은 적극적인 지원과 관련이 있습니다. 이 경고에 대해 어떻게해야합니까? </usr/local/lib/ruby/gems/2.7.0/gems/i18n-1.8.2/lib/i18n.rb:195 : 경고 : 호출 된 메소드`t '는 여기에 정의되어 있습니다
Hackeron
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.