私はRuby Koansに取り組んでいます。
公案test_the_shovel_operator_modifies_the_original_string
は文字列について.rb以下のコメントが含まれています。
Ruby プログラマーは、文字列を構築するときに、プラスイコール演算子 (+=) よりもシャベル演算子 (<<) を好む傾向があります。なぜでしょうか?
私の推測では、それはスピードに関係していると思いますが、ショベルのオペレーターのスピードを上げるための内部の動作がわかりません。
誰かこの好みの詳細を説明していただけますか?
ベストアンサー1
証拠:
a = 'foo'
a.object_id #=> 2154889340
a << 'bar'
a.object_id #=> 2154889340
a += 'quux'
a.object_id #=> 2154742560
したがって、<<
新しい文字列を作成するのではなく、元の文字列を変更します。この理由は、Ruby では が(他の演算子についても同様) 代入の構文a += b
上の省略形であるためです。一方、は の別名であり、その場でレシーバを変更します。a = a + b
<op>=
<<
concat()