Wir haben uns kürzlich bei meinem Job für einen Ruby Style Guide entschieden. Eines der Erlasse ist, dass keine Zeile breiter als 80 Zeichen sein sollte. Da es sich um ein Rails-Projekt handelt, haben wir häufig etwas längere Zeichenfolgen - dh " Benutzer X wollte Ihnen eine Nachricht zu Thing Y senden ", die nicht immer innerhalb der 80-Zeichen-Stilbeschränkung liegt.
Ich verstehe, dass es drei Möglichkeiten gibt, eine lange Zeichenfolge über mehrere Zeilen zu führen:
- HEREDOC
- % Q {}
- Tatsächliche Verkettung von Zeichenfolgen.
Alle diese Fälle erfordern jedoch mehr Rechenzyklen, was albern erscheint. String-Verkettung natürlich, aber für HEREDOC
und %Q
ich muss die Zeilenumbrüche über so etwas entfernen .gsub(/\n$/, '')
.
Gibt es eine reine Syntaxmethode, die gleichbedeutend damit ist, dass nur die gesamte Zeichenfolge in einer Zeile steht? Das Ziel ist natürlich, keine zusätzlichen Zyklen zu verbringen, nur weil ich möchte, dass mein Code etwas besser lesbar ist. (Ja, mir ist klar, dass man diesen Kompromiss viel machen muss ... aber für die Saitenlänge scheint das einfach albern.)
Update: Backslashes sind nicht genau das, was ich möchte, da Sie die Einrückung verlieren, was sich wirklich auf den Stil / die Lesbarkeit auswirkt.
Beispiel:
if foo
string = "this is a \
string that spans lines"
end
Ich finde das oben etwas schwer zu lesen.
EDIT : Ich habe unten eine Antwort hinzugefügt; Drei Jahre später haben wir jetzt den schnörkellosen Heredoc.
quelle
\n
Zeilenumbrüche beibehalten möchten oder nicht. Die Top-Antwort behält sie nicht - Ihre Antwort jedoch. Die Frage lautet "ohne Zeilenumbrüche zu entfernen" - die Beschreibung lautet jedoch "[...] Ich muss die Zeilenumbrüche entfernen."Antworten:
Vielleicht ist es das, wonach Sie suchen?
quelle
Sie können
\
damit angeben, dass eine beliebige Ruby-Zeile in der nächsten Zeile fortgesetzt wird. Dies funktioniert auch mit Strings:wird ausgegeben
"this is a string that spans lines"
quelle
Drei Jahre später gibt es in Ruby 2.3 eine Lösung: Der schnörkellose Heredoc.
Link zum Blog-Beitrag: https://infinum.co/the-capsized-eight/articles/multiline-strings-ruby-2-3-0-the-squiggly-heredoc
quelle
<<~HEREDOC
Behält die Zeilenumbruchzeichen bei, es werden nur die Einrückungen entfernt. ZBline 1\nline 2\nline 3\n
Ich hatte dieses Problem, als ich versuchte, eine sehr lange URL zu schreiben. Das Folgende funktioniert.
Beachten Sie, dass beim Erstellen der URL-Zeichenfolge keine Zeilenumbrüche oder Leerzeichen vorhanden sein dürfen. Wenn Sie Zeilenumbrüche wünschen, verwenden Sie HEREDOC.
Hier haben Sie Einrückung für Lesbarkeit, einfache Änderung, ohne die umständlichen Anführungszeichen und Backslashes in jeder Zeile. Die Kosten für das Verbinden der Saiten sollten vernachlässigbar sein.
quelle
Ich habe Zacks Antwort geändert, da ich Leerzeichen und Interpolation, aber keine Zeilenumbrüche wollte, und verwendet:
wo
name = 'fred'
dies produziertIt's a nice day "fred" for a walk!
quelle