Ruby 2.7 baru saja dirilis dan muncul peringatan baru untuk "Pemisahan argumen posisi dan kata kunci" (lihat Posting Rilis mereka ). Saya bermain-main dengannya dan menemukan bahwa ada peringatan lain, yang saya tidak mengerti.
Contoh:
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
Saya pikir peringatan pertama tentang penghinaan itu jelas, tetapi peringatan kedua The called method `multiply' is defined here
membingungkan bagi saya.
Apa arti peringatan kedua? Apakah ini terkait dengan peringatan pertama?
Kedua peringatan hilang saat menambahkan **
ke panggilan ( multiply(**args)
).
Jawaban:
Ada peringatan tunggal dengan pemisahan teks menjadi dua baris. Secara harfiah mengatakan:
args
harus dikonversi ke**args
, di sini adalah panggilan yang menghasilkan peringatan ini, di sini adalah definisi untuk kenyamanan Anda .sumber