コーディングルール2
Stringに+は使わない。
+がダメな例
str = "出力" str = str + "するよ" puts str
+が良い例
str = "出力" str2 = str + "するよ" puts str puts str2
上記の方はレシーバ自体を破壊的に変えている感じがするけれど、
新しいオブジェクトを生成しててメモリを消費する。
たのしいRubyとか割といろんな本に書いてるね。
でかいtxtファイルとかを読み込んで、1行ずつ+で文字列に加えたり、
ループでひたすら+しちゃうのは良くない。
レシーバを破壊的に変えて文字列を連結する場合は、
str = "出力" str << "するよ" puts str
str = "出力" str.concat("するよ") puts str
上2つのどちらかじゃないとダメ。
これだと破壊的にレシーバを置き換える更新をして連結をするから、
1個のStringオブジェクトのままで済んでメモリの消費を抑えられる。
ということで、Stringに+は基本的に使わない!というのは周りにも煩く言ってます。
ちなみに式展開を使って
str = "出力" puts "#{str}するよ"
のような事も良くしますが、これは新しいオブジェクトが出来ちゃうかもしれない。
にわか知識です(´Д`;)これも良くない気がしてきた…