Gần đây, chúng tôi đã quyết định công việc của mình cho một hướng dẫn kiểu Ruby. Một trong những nguyên tắc là không có dòng nào rộng hơn 80 ký tự. Vì đây là dự án Rails, chúng tôi thường có chuỗi dài hơn một chút - tức là "Người dùng X muốn gửi cho bạn thông báo về Thing Y" không phải lúc nào cũng phù hợp với giới hạn kiểu 80 ký tự.Phá vỡ các chuỗi dài trên nhiều dòng trong Ruby mà không tước các dòng mới
Tôi hiểu có ba cách để có một dài khoảng chuỗi nhiều dòng:
- HEREDOC
- % Q {}
- thực tế nối chuỗi.
Tuy nhiên, tất cả các trường hợp này sẽ phải mất nhiều chu kỳ tính toán hơn, điều này có vẻ ngớ ngẩn. Kết nối chuỗi rõ ràng, nhưng đối với HEREDOC và% Q tôi phải loại bỏ các dòng mới, thông qua một cái gì đó như .gsub (/ \ n $ /, '').
Có cách cú pháp thuần túy để thực hiện việc này hay không, điều đó tương đương với việc chỉ có toàn bộ chuỗi trên một dòng? Mục đích là, rõ ràng, không phải tốn thêm bất kỳ chu kỳ nào chỉ vì tôi muốn mã của tôi có thể đọc được nhiều hơn một chút. (Vâng, tôi nhận ra rằng bạn phải làm cho sự cân bằng đó rất nhiều ... nhưng đối với chiều dài chuỗi, điều này có vẻ ngớ ngẩn.)
Cập nhật: Lùi chéo không chính xác những gì tôi muốn bởi vì bạn mất thụt đầu dòng, mà thực sự ảnh hưởng đến phong cách/khả năng đọc.
Ví dụ:
if foo
string = "this is a \
string that spans lines"
end
tôi thấy ở trên một chút khó đọc.
EDIT: Tôi đã thêm câu trả lời bên dưới; ba năm sau, chúng tôi bây giờ có một con chim bồ câu.
Nó có thể là giá trị trong khi của bạn yếu tố ra những chuỗi. – Cheezmeister
có thể trùng lặp của [Ruby: Tôi có thể viết chuỗi nhiều dòng không có nối không?] (Http://stackoverflow.com/questions/2337510/ruby-can-i-write-multi-line-string-with-no- concatenation) – givanse
Không rõ liệu bạn có muốn giữ '\ n' ký tự dòng mới hay không. Câu trả lời hàng đầu không giữ chúng - nhưng câu trả lời của bạn là không. Câu hỏi nói "không tước các dòng mới" —yêu cầu mô tả nói "[...] Tôi phải loại bỏ các dòng mới". –