Kami baru-baru ini memutuskan pada pekerjaan saya untuk panduan gaya ruby. Salah satu dekrit adalah bahwa tidak boleh ada garis yang lebih lebar dari 80 karakter. Karena ini adalah proyek Rails, kami sering memiliki string yang sedikit lebih lama - yaitu " Pengguna X ingin mengirimi Anda pesan tentang Thing Y " yang tidak selalu sesuai dengan batas gaya 80 karakter.
Saya mengerti ada tiga cara untuk memiliki string panjang span beberapa baris:
- HEREDOC
- % Q {}
- Rangkaian string aktual.
Namun, semua kasus ini pada akhirnya mengambil lebih banyak siklus perhitungan, yang tampaknya konyol. Rangkaian string jelas, tetapi untuk HEREDOC
dan %Q
saya harus menghapus baris baru, melalui sesuatu seperti .gsub(/\n$/, '')
.
Apakah ada cara sintaksis murni untuk melakukan ini, itu setara dengan hanya memiliki seluruh string pada satu baris? Tujuannya, jelas, untuk tidak menghabiskan siklus tambahan hanya karena saya ingin kode saya sedikit lebih mudah dibaca. (Ya, saya menyadari bahwa Anda harus melakukan banyak pengorbanan ... tetapi untuk panjang tali, ini sepertinya konyol.)
Pembaruan: Garis miring terbalik tidak persis seperti yang saya inginkan karena Anda kehilangan indentasi, yang benar-benar memengaruhi gaya / keterbacaan.
Contoh:
if foo
string = "this is a \
string that spans lines"
end
Saya menemukan hal di atas agak sulit dibaca.
EDIT : Saya menambahkan jawaban di bawah ini; tiga tahun kemudian kita sekarang memiliki heredoc berlekuk.
sumber
\n
karakter baris baru atau tidak. Jawaban teratas tidak menyimpannya — namun jawaban Anda tetap. Pertanyaannya mengatakan "tanpa menelanjangi baris baru" - tetapi deskripsi mengatakan "[...] Saya harus menghapus baris baru."Jawaban:
Mungkin ini yang Anda cari?
sumber
Anda dapat menggunakan
\
untuk menunjukkan bahwa setiap baris Ruby berlanjut pada baris berikutnya. Ini juga berfungsi dengan string:akan menampilkan
"this is a string that spans lines"
sumber
Tiga tahun kemudian, sekarang ada solusi di Ruby 2.3: heredoc berlekuk.
Tautan posting blog: https://infinum.co/the-capsized-eight/articles/multiline-strings-ruby-2-3-0-the-squiggly-heredoc
sumber
<<~HEREDOC
membuat karakter baris baru, hanya rids dari lekukan. Misalnyaline 1\nline 2\nline 3\n
Saya mengalami masalah ini ketika saya mencoba menulis url yang sangat panjang, karya-karya berikut.
Catatan, tidak boleh ada baris baru, spasi putih saat string url terbentuk. Jika Anda ingin baris baru, maka gunakan HEREDOC.
Di sini Anda memiliki lekukan untuk keterbacaan, kemudahan modifikasi, tanpa tanda kutip dan garis miring terbalik pada setiap baris. Biaya bergabung dengan string harus diabaikan.
sumber
Saya mengubah jawaban Zack karena saya ingin spasi dan interpolasi tetapi tidak baris baru dan digunakan:
tempat
name = 'fred'
ini menghasilkanIt's a nice day "fred" for a walk!
sumber