我正在寻找一种在Ruby中连接字符串的更优雅的方式。

我有如下一行:

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

有更好的方法吗?

那么<<和+之间有什么区别呢?


当前回答

这里有更多的方法:

"String1" + "String2"

"#{String1} #{String2}"

String1<<String2

等等……

其他回答

情况很重要,例如:

# 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

在第一个示例中,与+操作符连接将不会更新输出对象,然而,在第二个示例中,<<操作符将在每次迭代中更新输出对象。因此,对于上述类型的情况,<<更好。

木偶:

$username = 'lala'
notify { "Hello ${username.capitalize}":
    withpath => false,
}

你说的是串联?那么#concat方法呢?

a = 'foo'
a.object_id #=> some number
a.concat 'bar' #=> foobar
a.object_id #=> same as before -- string a remains the same object

公平地说,concat别名为<<。

你可以直接在字符串定义中连接:

nombre_apellido = "#{customer['first_name']} #{customer['last_name']} #{order_id}"

如果只是连接路径,可以使用Ruby自己的File。连接方法。

source = File.join(ROOT_DIR, project, 'App.config')