Aku benar-benar baru untuk Ruby dan aku mencoba untuk memahami jika ada waktu tertentu ketika saya harus menggunakan ""
vs ''
.
Saya telah menggunakan tanda kutip tunggal sebagian besar waktu karena lebih mudah untuk mengetik tapi saya tidak yakin apakah saya harus melakukannya.
misalnya get 'user/new'
vsget "user/new"
Jawaban:
" "
memungkinkan Anda melakukan interpolasi string, misalnya:sumber
kecuali interpolasi, perbedaan lain adalah bahwa 'urutan pelarian' tidak bekerja dalam kutipan tunggal
sumber
'don\'t'
.puts '\\'
Ia hanya akan mencetak satu tebasan. lihat di sini stackoverflow.com/questions/25499046/…Untuk menjawab pertanyaan Anda, Anda harus menggunakan
""
ketika Anda ingin melakukan interpolasi string:Gunakan kutipan sederhana sebaliknya.
Juga jika Anda bertanya-tanya apakah ada perbedaan dalam hal kinerja, ada pertanyaan bagus tentang ini di StackOverflow.
Dan jika Anda benar-benar baru dalam RoR, saya mendorong Anda untuk mengambil buku Ruby yang layak untuk mempelajari dasar-dasar bahasa. Ini akan membantu Anda memahami apa yang Anda lakukan (dan akan membuat Anda berpikir bahwa Rails itu ajaib). Saya pribadi merekomendasikan The Well grounded Rubyist .
sumber
Ada perbedaan antara
''
tanda kutip tunggal dan ganda""
di Ruby dalam hal apa yang akan dievaluasi menjadi string.Awalnya, saya ingin mengklarifikasi bahwa dalam bentuk literal string apa pun di antara tanda kutip tunggal atau ganda akan dievaluasi sebagai objek string, yang merupakan turunan dari kelas Ruby String.
Oleh karena itu,
'stackoverflow'
dan"stackoverflow"
keduanya akan mengevaluasi instance kelas String tanpa perbedaan sama sekali .Perbedaan
Perbedaan mendasar antara dua bentuk string secara literal (tanda kutip tunggal atau ganda) adalah bahwa tanda kutip ganda memungkinkan untuk urutan-urutan pelarian sementara tanda kutip tunggal tidak!
String literal yang dibuat oleh tanda kutip tunggal tidak mendukung interpolasi string dan tidak luput dari urutan.
Contoh yang rapi adalah:
sedangkan
Interpolasi dengan tanda kutip tunggal tidak bekerja sama sekali:
Praktek terbaik
Seperti yang disarankan oleh sebagian besar Ruby Linters untuk menggunakan literal tanda kutip tunggal untuk string Anda dan pilih yang ganda dalam hal urutan interpolasi / pelolosan.
sumber
Contoh kode melarikan diri:
Contoh interpolasi:
sumber
Mirip dengan jawaban "\ n" dalam pencetakan, berikut ini adalah perbedaannya
jadi sepertinya * dikonversi menjadi karakter yang lolos dalam tanda kutip ganda, tetapi tidak dalam tanda kutip tunggal. BTW, itu akan berdampak pada output ketika menggunakan dalam ekspresi reguler misalnya, str.gsub (/ ekspresi reguler /, '\ 1, \ 2')
sumber
Alasan lain Anda ingin menggunakan tanda kutip tunggal adalah ketika meneruskan pola regex sebagai string:
Pola regex ini akan berfungsi karena dilewatkan dalam tanda kutip tunggal:
Pola regex ini akan gagal karena diteruskan dalam tanda kutip ganda (Anda harus meloloskan diri dua kali agar bisa berfungsi):
sumber
Dalam kasus khusus ini, tidak ada bedanya bagaimana Anda menulisnya. Mereka setara. Juga, Anda mungkin ingin membaca beberapa panduan Ruby / tutorial :)
sumber