488 Stimmen

Rubin: Kann ich einen mehrzeiligen String ohne Verkettung schreiben?

Gibt es eine Möglichkeit, dies ein wenig besser aussehen zu lassen?

conn.exec 'select attr1, attr2, attr3, attr4, attr5, attr6, attr7 ' +
          'from table1, table2, table3, etc, etc, etc, etc, etc, ' +
          'where etc etc etc etc etc etc etc etc etc etc etc etc etc'

Gibt es zum Beispiel eine Möglichkeit, eine Verkettung zu implizieren?

9voto

Pwnrar Punkte 1117

Um das Schließen der Klammern für jede Zeile zu vermeiden, können Sie einfach doppelte Anführungszeichen mit einem Backslash verwenden, um den Zeilenumbruch zu umgehen:

"select attr1, attr2, attr3, attr4, attr5, attr6, attr7 \
from table1, table2, table3, etc, etc, etc, etc, etc, \
where etc etc etc etc etc etc etc etc etc etc etc etc etc"

6voto

Dom Brezinski Punkte 107
conn.exec 'select attr1, attr2, attr3, attr4, attr5, attr6, attr7 ' <<
        'from table1, table2, table3, etc, etc, etc, etc, etc, ' <<
        'where etc etc etc etc etc etc etc etc etc etc etc etc etc'

<< ist der Verkettungsoperator für Zeichenketten

6voto

UncleGene Punkte 2122

Wenn Sie faire zusätzliche Leerzeichen und Zeilenumbrüche zu beachten, können Sie

conn.exec %w{select attr1, attr2, attr3, attr4, attr5, attr6, attr7
  from table1, table2, table3, etc, etc, etc, etc, etc,
  where etc etc etc etc etc etc etc etc etc etc etc etc etc} * ' '

(für interpolierte Zeichenketten %W verwenden)

5voto

Aidan Cully Punkte 5297
conn.exec [
  "select attr1, attr2, attr3, ...",
  "from table1, table2, table3, ...",
  "where ..."
].join(' ')

Dieser Vorschlag hat gegenüber here-Dokumenten und langen Zeichenketten den Vorteil, dass automatische Einrücker jeden Teil der Zeichenkette entsprechend einrücken können. Aber er geht zu Lasten der Effizienz.

4voto

Sandip Mane Punkte 820

Elegante Antwort heute:

<<~TEXT
Hi #{user.name}, 

Thanks for raising the flag, we're always happy to help you.
Your issue will be resolved within 2 hours.
Please be patient!

Thanks again,
Team #{user.organization.name}
TEXT

Es gibt einen Unterschied in <<-TEXT y <<~TEXT Bei der ersten Variante bleibt der Abstand im Block erhalten, bei der zweiten nicht.

Es gibt auch noch andere Möglichkeiten. Wie Verkettung usw., aber diese macht im Allgemeinen mehr Sinn.

Wenn ich hier falsch liege, lassen Sie mich wissen, wie...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X