Ben*_*nIO 16 ruby ruby-on-rails rubocop
我正在使用rubocop基本上清理我凌乱的代码......
其中一个错误是:
使用\而不是+或<<来连接这些字符串.
为什么是这样?
我在Ruby文档中找不到它.为什么要使用\
替代+
或<<
?
Sig*_*igi 25
在Ruby中,文字字符串在遇到它们时会被分配为内存中的对象.如果你连接两个字符串文字,如
str = "foo" + "bar"
Run Code Online (Sandbox Code Playgroud)
你将实际分配3个String
对象:"foo"
,"bar"
以及级联的结果(其然后被称为str
).
如果你这样做会发生同样的事情
"foo" << "bar"
Run Code Online (Sandbox Code Playgroud)
在许多情况下,这只是一个温和的低效率,你不应该太担心.
但是,要注意如果你在循环中这样做,并且如果聚合String
变大,你将String
在每次迭代时分配一个更大的对象(你可以通过收集一个字符串部分来避免它Array
,然后join
在你完成时调用;并且,foo << 'bar'
将foo
在适当的位置进行修改,这在循环中是可接受的).
通过使用\
你不会连接中间对象,而是有效地向解析器提供一个String
文字(因为\
只是继续下一行的字符串).
这个"foo" + "bar" + "baz"
习惯用法经常在Java中使用,其中字符串是不可变的,文字在编译时连接在一起.(Java中的每个字符串文字只存储一次,然后在整个代码中重用; Ruby不会这样做.)此外,Java没有更好的方法可以在多行上继续字符串,这就是Java程序员这样做的原因.
归档时间: |
|
查看次数: |
1578 次 |
最近记录: |