<<と=の違い

キットホー

fooバージョン1で変更された理由を誰かが説明できますか?<<=割り当ての違いは何ですか?

バージョン1

foo = "apple"
bar = foo
"foo: #{foo}"    # => foo: apple

bar << "hello"
"bar: #{bar}"    # => bar: applehello
"foo: #{foo}"    # => foo: applehello

バージョン2

foo = "apple"
bar = foo    
"foo: #{foo}"    # => foo: apple

bar  = bar + "hello"
"bar: #{bar}"    # => bar: applehello
"foo: #{foo}"    # => foo: apple
ElmoVanKielmo

なぜなら=、あなたが言ったように割り当てています。
ただし<<、これは割り当てではありません。左側のオペランドが文字列の場合は連結演算子です。
そう:

bar  = bar + "hello"

の内容barを「hello」と結合して新しい文字列を作成し、この新しい文字列を変数bar割り当てます

bar << "hello"

文字列のインプレース連結を行います-bar新しい文字列には設定されませんが、保持している文字列は変更されます。

したがって、<<barとfooを使用すると、同じオブジェクトへの参照を維持し=ますが、barのみを使用すると新しい値を取得します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事