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 次 |
| 最近记录: |