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?

4voto

Josh Punkte 10990

Wie Sie habe auch ich nach einer Lösung gesucht, die enthält keine Zeilenumbrüche . (Während sie in SQL sicher sein mögen, sind sie in meinem Fall nicht sicher, und ich habe einen großen Textblock zu bewältigen)

Dies ist wohl genauso hässlich, aber Sie können backslash-escape Zeilenumbrüche in einem heredoc, um sie aus der resultierenden Zeichenfolge wegzulassen:

conn.exec <<~END_OF_INPUT
    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
  END_OF_INPUT

Beachten Sie, dass dies nicht ohne Interpolation möglich ist (d.h. <<~'END_OF_INPUT' ), seien Sie also vorsichtig. #{expressions} werden hier ausgewertet, während sie in Ihrem ursprünglichen Code nicht ausgewertet werden. A. Wilsons Antwort kann aus diesem Grund besser sein.

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