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?

31voto

Kamil Lelonek Punkte 14110

Manchmal lohnt es sich, neue Zeilenzeichen zu entfernen \n mögen:

conn.exec <<-eos.squish
 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
eos

25voto

juliangonzalez Punkte 3973

Sie können auch doppelte Anführungszeichen verwenden

x = """
this is 
a multiline
string
"""

2.3.3 :012 > x
 => "\nthis is\na multiline\nstring\n"

Falls erforderlich, um Zeilenumbrüche zu entfernen " \n " Backslash "\" am Ende jeder Zeile verwenden

17voto

Alex Cohen Punkte 4594

Andere Optionen:

#multi line string
multiline_string = <<EOM
This is a very long string
that contains interpolation
like #{4 + 5} \n\n
EOM

puts multiline_string

#another option for multiline string
message = <<-EOF
asdfasdfsador #{2+2} this month.
asdfadsfasdfadsfad.
EOF

puts message

15voto

Peter Punkte 120325
conn.exec = <<eos
  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
eos

15voto

Mshka Punkte 1668

Kürzlich wurde mit den neuen Funktionen in Ruby 2.3 die neue squiggly HEREDOC ermöglicht es Ihnen, unsere mehrzeiligen Strings mit einer minimalen Änderung zu schreiben, so dass Sie dies in Kombination mit dem .squish (wenn Sie Rails verwenden) können Sie mehrzeilige Texte auf nette Art und Weise schreiben! Falls Sie nur Ruby verwenden, können Sie eine <<~SQL.split.join(" ") das ist fast derselbe

[1] pry(main)> <<~SQL.squish
[1] pry(main)*   select attr1, attr2, attr3, attr4, attr5, attr6, attr7
[1] pry(main)*   from table1, table2, table3, etc, etc, etc, etc, etc,
[1] pry(main)*   where etc etc etc etc etc etc etc etc etc etc etc etc etc
[1] pry(main)* SQL
=> "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"

ref: https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc

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