มีการกำหนดวิธีการที่เรียกว่า `… 'ที่นี่


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
ดีมากขอบคุณ! อาจเป็นเพียงฉัน แต่มันค่อนข้างสับสน ...
lxxxvi

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.