เมื่อเร็ว ๆ นี้เราตัดสินใจที่จะทำงานกับไกด์สไตล์ทับทิม หนึ่งในสิตที่ไม่ควรมีความกว้างเกิน 80 ตัวอักษร เนื่องจากนี่เป็นโครงการ Rails เรามักจะมีสตริงที่ยาวกว่าเล็กน้อยนั่นคือ " User X ต้องการส่งข้อความเกี่ยวกับ Thing Y " ให้คุณซึ่งไม่เหมาะกับความยาวของอักขระ 80 ตัว
ฉันเข้าใจว่ามีสามวิธีในการใช้สตริงที่มีความยาวหลายบรรทัด:
- HEREDOC
- Q% {}
- การต่อสตริงที่เกิดขึ้นจริง
อย่างไรก็ตามกรณีทั้งหมดนี้จบลงด้วยการคำนวณรอบมากขึ้นซึ่งดูเหมือนว่าโง่ สตริงอย่างเห็นได้ชัด แต่สำหรับHEREDOC
และฉันต้องดึงออกจากการขึ้นบรรทัดใหม่ผ่านสิ่งที่ต้องการ%Q
.gsub(/\n$/, '')
มีวิธีทางไวยากรณ์ที่บริสุทธิ์ในการทำเช่นนี้ซึ่งเทียบเท่ากับเพียงแค่มีทั้งสายในหนึ่งบรรทัด? เห็นได้ชัดว่าเป้าหมายคือการไม่ใช้รอบพิเศษเพียงเพราะฉันต้องการรหัสของฉันจะอ่านง่ายขึ้นเล็กน้อย (ใช่ฉันรู้ว่าคุณต้องทำให้การแลกเปลี่ยนนั้นมาก ... แต่สำหรับความยาวของสตริงสิ่งนี้ดูเหมือนจะไร้สาระ)
อัปเดต: แบ็กสแลชไม่ได้เป็นอย่างที่ฉันต้องการเพราะคุณเสียการเยื้องซึ่งส่งผลต่อสไตล์ / ความสามารถในการอ่าน
ตัวอย่าง:
if foo
string = "this is a \
string that spans lines"
end
ฉันพบว่าข้างต้นอ่านยากนิดหน่อย
แก้ไข : ฉันเพิ่มคำตอบด้านล่าง; สามปีต่อมาตอนนี้เรามี heredoc อย่างแน่นหนา
\n
อักขระบรรทัดใหม่หรือไม่ คำตอบยอดนิยมไม่ได้เก็บไว้ แต่คำตอบของคุณก็คือ คำถามที่ว่า "โดยไม่ต้องขึ้นบรรทัดใหม่" - แต่คำอธิบายบอกว่า "[... ] ฉันต้องตัดบรรทัดใหม่"