Конкатенация строк в Ruby - PullRequest
       38

Конкатенация строк в Ruby

337 голосов
/ 18 декабря 2008

Я ищу более элегантный способ объединения строк в Ruby.

У меня есть следующая строка:

source = "#{ROOT_DIR}/" << project << "/App.config"

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

И в этом отношении, в чем разница между << и +?

Ответы [ 14 ]

3 голосов
/ 09 октября 2018

Вы можете использовать оператор + или <<, но в ruby ​​.concat функция является наиболее предпочтительной, поскольку она намного быстрее, чем другие операторы. Вы можете использовать его как.

source = "#{ROOT_DIR}/".concat(project.concat.("/App.config"))
1 голос
/ 19 февраля 2019

Вы также можете использовать % следующим образом:

source = "#{ROOT_DIR}/%s/App.config" % project

Этот подход также работает с ' (одиночной) кавычкой.

0 голосов
/ 29 марта 2019

Вы можете объединить в определении строки напрямую:

nombre_apellido = "#{customer['first_name']} #{customer['last_name']} #{order_id}"
0 голосов
/ 06 февраля 2019

Ситуация имеет значение, например:

# this will not work
output = ''

Users.all.each do |user|
  output + "#{user.email}\n"
end
# the output will be ''
puts output

# this will do the job
output = ''

Users.all.each do |user|
  output << "#{user.email}\n"
end
# will get the desired output
puts output

В первом примере конкатенация с оператором + не будет обновлять объект output, однако во втором примере оператор << будет обновлять объект output с каждой итерацией. Таким образом, для ситуации вышеупомянутого типа, << лучше.

...