हमने हाल ही में अपनी नौकरी पर रूबी स्टाइल गाइड का फैसला किया। एडिट्स में से एक यह है कि कोई भी रेखा 80 वर्णों से अधिक व्यापक नहीं होनी चाहिए। चूँकि यह एक रेल परियोजना है, हमारे पास अक्सर ऐसे तार होते हैं जो थोड़े लंबे होते हैं - यानी " उपयोगकर्ता X आपको थिंग वाई के बारे में एक संदेश भेजना चाहता था " जो हमेशा 80 वर्ण शैली की सीमा के भीतर फिट नहीं होता है।
मैं समझता हूं कि एक लंबी स्ट्रिंग अवधि के तीन तरीके हैं कई लाइनें:
- हियरडॉक
- % क्यू {}
- वास्तविक स्ट्रिंग संघनन।
हालांकि, इन सभी मामलों में अंत में अधिक संगणना चक्र होता है, जो मूर्खतापूर्ण लगता है। स्ट्रिंग कॉन्सेप्टन स्पष्ट रूप से, लेकिन इसके लिए HEREDOC
और %Q
मुझे कुछ की तरह, नई सुर्खियों को छीनना होगा .gsub(/\n$/, '')
।
क्या ऐसा करने के लिए एक शुद्ध वाक्यविन्यास तरीका है, जो केवल एक पंक्ति पर पूरे स्ट्रिंग होने के बराबर है? लक्ष्य, जाहिर है, कोई अतिरिक्त चक्र खर्च नहीं करने के लिए, क्योंकि मैं चाहता हूं कि मेरा कोड थोड़ा अधिक पठनीय हो। (हां, मुझे एहसास है कि आपको उस ट्रेडऑफ़ को बहुत अधिक करना होगा ... लेकिन स्ट्रिंग की लंबाई के लिए, यह सिर्फ मूर्खतापूर्ण लगता है।)
अपडेट: बैकस्लैश ठीक वही नहीं हैं जो मैं चाहता हूं क्योंकि आप इंडेंटेशन खो देते हैं, जो वास्तव में शैली / पठनीयता को प्रभावित करता है।
उदाहरण:
if foo
string = "this is a \
string that spans lines"
end
मुझे ऊपर पढ़ने में थोड़ा मुश्किल लगता है।
संपादित करें : मैंने नीचे एक उत्तर जोड़ा; तीन साल बाद अब हमारे पास स्क्वीजीली हेरेडोक है।
\n
न्यूलाइन वर्ण रखना चाहते हैं या नहीं। शीर्ष उत्तर उन्हें नहीं रखता है - फिर भी आपका उत्तर देता है। सवाल कहता है, "नई स्ट्रिपिंग के बिना" - विवरण में कहा गया है "[...] मुझे नए सिरे से स्ट्रिप आउट करना है।"