我正在寻找一种在Ruby中连接字符串的更优雅的方式。
我有如下一行:
source = "#{ROOT_DIR}/" << project << "/App.config"
有更好的方法吗?
那么<<和+之间有什么区别呢?
我正在寻找一种在Ruby中连接字符串的更优雅的方式。
我有如下一行:
source = "#{ROOT_DIR}/" << project << "/App.config"
有更好的方法吗?
那么<<和+之间有什么区别呢?
当前回答
你可以直接在字符串定义中连接:
nombre_apellido = "#{customer['first_name']} #{customer['last_name']} #{order_id}"
其他回答
你可以通过以下几种方式做到这一点:
正如你用<<所示,但这不是通常的方式 用字符串插值 source = "#{ROOT_DIR}/#{项目}/App.config" 与+ source = "#{ROOT_DIR}/" + project + "/App.config"
据我所见,第二种方法在内存/速度方面似乎更有效(虽然没有测量过)。当ROOT_DIR为nil时,这三个方法都会抛出一个未初始化的常量错误。
在处理路径名时,您可能希望使用File。连接以避免混淆路径名分隔符。
说到底,这是一个品味问题。
这里有更多的方法:
"String1" + "String2"
"#{String1} #{String2}"
String1<<String2
等等……
你说的是串联?那么#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别名为<<。
因为这是一个路径,我可能会使用数组和join:
source = [ROOT_DIR, project, 'App.config'] * '/'
对于你的特殊情况,你也可以使用array# join构造文件路径类型的字符串:
string = [ROOT_DIR, project, 'App.config'].join('/')]
这有一个令人愉快的副作用,自动将不同类型转换为字符串:
['foo', :bar, 1].join('/')
=>"foo/bar/1"