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


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.