bagaimana jika Anda bergabung dengan angka? [1,2,3] => 123?
stevenspiel
3
@ mr.musicman joinbekerja dengan enumerables apa pun yang merespons to_s, termasuk bilangan bulat, tetapi hasilnya akan selalu berupa string. Jika Anda menginginkan hasil bilangan bulat, Anda dapat menggunakan to_ihasilnya.
sepp2k
1
Jika pada awalnya Anda memecah string multi-line menggunakan String#lines, Anda dapat mengikatnya dengan sehat menggunakan my_string.join('')(perhatikan argumen string kosong).
Frank Koehl
Untuk menambahkan apa yang dikatakan @ sepp2k: joincoba #to_strdulu dan #to_skedua.
Greg Navis
19
Meskipun sedikit lebih samar daripada join, Anda juga bisa mengalikan array dengan string.
Selain samar, apakah ada kemungkinan cacat saat menggunakan trik ini?
marcio
4
@marcioAlmada Tidak cacat, hanya overhead minimal. Dalam array.c hal pertama yang dilakukan Ruby adalah memeriksa tipe string dan kemudian memanggil metode join. Juga: cungkil dengan batu sumber pertunjukan! Coba sendiri: $ Array.instance_methods.*($ adalah singkatan untuk show-source)
okket
1
Inilah solusi saya:
@arr=['<p>Hello World</p>','<p>This is a test</p>']@arr.reduce(:+)=><p>HelloWorld</p><p>This is a test</p>
Jawaban:
Gunakan
Array#join
metode (argumen untukjoin
apa yang harus disisipkan di antara string - dalam hal ini spasi):sumber
[1,2,3] => 123
?join
bekerja dengan enumerables apa pun yang meresponsto_s
, termasuk bilangan bulat, tetapi hasilnya akan selalu berupa string. Jika Anda menginginkan hasil bilangan bulat, Anda dapat menggunakanto_i
hasilnya.String#lines
, Anda dapat mengikatnya dengan sehat menggunakanmy_string.join('')
(perhatikan argumen string kosong).join
coba#to_str
dulu dan#to_s
kedua.Meskipun sedikit lebih samar daripada
join
, Anda juga bisa mengalikan array dengan string.sumber
$ Array.instance_methods.*
($ adalah singkatan untuk show-source)Inilah solusi saya:
sumber