Contoh kode Anda tidak berkembang pada bagian dari topik Anda, yaitu simbol, sehingga bagian dari pertanyaan itu tidak terjawab.
Jika Anda memiliki dua string, foo dan bar, dan keduanya dapat berupa string atau simbol, Anda dapat menguji kesetaraan dengan
foo.to_s == bar.to_s
Sedikit lebih efisien untuk melewati konversi string pada operan dengan tipe yang diketahui. Jadi jika foo selalu berupa string
foo == bar.to_s
Tetapi perolehan efisiensi hampir pasti tidak layak menuntut pekerjaan ekstra atas nama penelepon.
Sebelum menggunakan Ruby 2.2, hindari memasukkan string input yang tidak terkontrol untuk tujuan perbandingan (dengan string atau simbol), karena simbol tidak dikumpulkan dari sampah, sehingga Anda dapat membuka diri terhadap penolakan layanan melalui kehabisan resource. Batasi penggunaan simbol untuk nilai yang Anda kontrol, yaitu literal dalam kode Anda, dan properti konfigurasi tepercaya.
Ruby 2.2 memperkenalkan pengumpulan sampah simbol .
foo.intern == bar.intern
akan lebih baik - menyimpan string rata-rata lebih efisien daripada membuat string dari simbol. (Jika string yang diberikan sebelumnya telah diinternir, itu hanya mengembalikan simbolnya.)