Ruby: Могу ли я написать многострочную строку без конкатенации? - PullRequest
356 голосов
/ 25 февраля 2010

Есть ли способ сделать это немного лучше?

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'

Например, есть ли способ подразумевать конкатенацию?

Ответы [ 13 ]

5 голосов
/ 13 марта 2013

Если вы делаете помните о лишних пробелах и символах новой строки, вы можете использовать

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} * ' '

(используйте% W для интерполированных строк)

3 голосов
/ 15 июня 2016

Чтобы не закрывать скобки для каждой строки, вы можете просто использовать двойные кавычки с обратной косой чертой для перехода на новую строку:

"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"
3 голосов
/ 25 февраля 2010
conn.exec [
  "select attr1, attr2, attr3, ...",
  "from table1, table2, table3, ...",
  "where ..."
].join(' ')

Это предложение имеет преимущество перед документами и длинными строками, заключающееся в том, что авто-отступы могут соответствующим образом создавать отступ для каждой части строки. Но это происходит за счет эффективности.

...