有什么办法能让这看起来好一点吗?
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'
比如,有没有办法暗示串联?
有什么办法能让这看起来好一点吗?
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'
比如,有没有办法暗示串联?
当前回答
今天的优雅回答:
<<~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
<<-TEXT和<<~TEXT有区别,前者保留了块内的空格,后者则没有。
还有其他的选择。 比如串联等等,但这个更有意义。
如果我错了,请告诉我…
其他回答
为了避免每一行的圆括号关闭,你可以简单地使用双引号和反斜杠来转义换行:
"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"
像你一样,我也在寻找一个不包括换行符的解决方案。(虽然它们在SQL中可能是安全的,但在我的情况下不安全,我有一个大的文本块要处理)
这可以说是同样丑陋,但你可以在heredoc中反斜杠转义换行符,以从结果字符串中省略它们:
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
请注意,如果没有插值(即<<~'END_OF_INPUT'),就不能执行此操作,所以要小心。#{expressions}将在这里求值,而在原始代码中不会求值。答:出于这个原因,威尔逊的回答可能更好。
你也可以使用双引号
x = """
this is
a multiline
string
"""
2.3.3 :012 > x
=> "\nthis is\na multiline\nstring\n"
如果需要删除换行符“\n”,请在每行末尾使用反斜杠“\”
今天的优雅回答:
<<~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
<<-TEXT和<<~TEXT有区别,前者保留了块内的空格,后者则没有。
还有其他的选择。 比如串联等等,但这个更有意义。
如果我错了,请告诉我…
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'
<<是字符串的连接操作符