Saya mencari cara yang lebih baik untuk menggabungkan variabel menjadi string, di Ruby.
Misalnya jika stringnya seperti:
"The animal
action
the second_animal
"
Dan saya memiliki variabel untuk animal
, action
dan second_animal
, cara apa yang disukai untuk menempatkan variabel tersebut ke dalam string?
Anda dapat menggunakan pemformatan seperti sprintf untuk memasukkan nilai ke dalam string. Untuk itu string harus menyertakan placeholder. Letakkan argumen Anda ke dalam array dan gunakan salah satu cara berikut: (Untuk info lebih lanjut, lihat dokumentasi untuk Kernel :: sprintf .)
Anda bahkan dapat secara eksplisit menentukan nomor argumen dan mengacaknya:
Atau tentukan argumen menggunakan kunci hash:
Perhatikan bahwa Anda harus memberikan nilai untuk semua argumen ke
%
operator. Misalnya, Anda tidak dapat menghindari definisianimal
.sumber
Saya akan menggunakan
#{}
konstruktor, seperti yang dinyatakan oleh jawaban lainnya. Saya juga ingin menunjukkan bahwa ada kehalusan nyata yang harus diperhatikan di sini:Sementara string dapat dibuat dengan tanda kutip tunggal (seperti yang ditunjukkan oleh
first_name
danlast_name
variabel, yang#{}
konstruktor hanya dapat digunakan dalam string dengan tanda kutip ganda.sumber
adalah cara lain untuk melakukannya.
sumber
Ini disebut interpolasi string, dan Anda melakukannya seperti ini:
Penting: ini hanya akan bekerja jika string ada di dalam tanda kutip ganda ("").
Contoh kode yang tidak akan berfungsi seperti yang Anda harapkan:
sumber
Sistem template ERB standar dapat bekerja untuk skenario Anda.
sumber
Anda dapat menggunakannya dengan variabel lokal Anda, seperti ini:
@animal = "Dog"
@action = "licks"
@second_animal = "Bird"
"The #{@animal} #{@action} the #{@second_animal}"
output akan menjadi: "The Dog menjilati yang Bird "
sumber