gpt4 book ai didi

Ruby:我可以编写没有连接的多行字符串吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:16:14 25 4
gpt4 key购买 nike

有没有办法让它看起来更好一点?

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'

比如,有没有办法暗示串联?

最佳答案

这个答案的某些部分帮助我得到了我需要的东西(简单的多行连接,没有额外的空格),但由于没有一个实际的答案有它,我在这里编译它们:

str = 'this is a multi-line string'\
' using implicit concatenation'\
' to prevent spare \n\'s'

=> "this is a multi-line string using implicit concatenation to eliminate spare
\\n's"

作为奖励,这里有一个使用有趣的 HEREDOC 语法的版本(通过 this link ):

p <<END_SQL.gsub(/\s+/, " ").strip
SELECT * FROM users
ORDER BY users.id DESC
END_SQL
# >> "SELECT * FROM users ORDER BY users.id DESC"

后者主要适用于需要更灵活处理的情况。我个人不喜欢它,它把处理放在一个奇怪的地方 w.r.t.字符串(即,在它前面,但使用通常随后出现的实例方法),但它就在那里。请注意,如果您要缩进最后一个 END_SQL标识符(这很常见,因为这可能在函数或模块中),您将需要使用带连字符的语法(即 p <<-END_SQL 而不是 p <<END_SQL )。否则,缩进空格会导致标识符被解释为字符串的延续。

这并没有节省多少打字时间,但对我来说,它看起来比使用 + 号更好。

此外(我在编辑中说,几年后),如果您使用的是 Ruby 2.3+,运算符 <<~ is also available , 它从最终字符串中删除了额外的缩进。您应该能够删除 .gsub调用,在这种情况下(尽管它可能取决于起始缩进和您的最终需求)。

编辑:再添加一个:

p %{
SELECT * FROM users
ORDER BY users.id DESC
}.gsub(/\s+/, " ").strip
# >> "SELECT * FROM users ORDER BY users.id DESC"

关于Ruby:我可以编写没有连接的多行字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com