Pertanyaan ruby mengubah array menjadi argumen fungsi


Katakanlah saya memiliki sebuah array. Saya ingin menyampaikan array ke fungsi. Fungsi ini, bagaimanapun, mengharapkan dua argumen. Apakah ada cara untuk terbang mengkonversi array menjadi 2 argumen? Sebagai contoh:

a = [0,1,2,3,4]
b = [2,3]
a.slice(b)

Akan menghasilkan kesalahan di Ruby. Saya perlu masukan a.slice(b[0],b[1]) Saya mencari sesuatu yang lebih elegan, seperti dalam a.slice(foo.bar(b)) Terima kasih.


76
2018-02-19 13:40


asal


Jawaban:


Anda dapat mengubah Array ke dalam daftar argumen dengan * (atau "splat") operator:

a = [0, 1, 2, 3, 4] # => [0, 1, 2, 3, 4]
b = [2, 3] # => [2, 3]
a.slice(*b) # => [2, 3, 4]

Referensi:


67
2018-02-19 13:46



Gunakan ini

a.slice(*b)

Ini disebut operator splat


89
2018-02-19 13:42