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
なぜなら=
、あなたが言ったように割り当てています。
ただし<<
、これは割り当てではありません。左側のオペランドが文字列の場合は連結演算子です。
そう:
bar = bar + "hello"
の内容bar
を「hello」と結合して新しい文字列を作成し、この新しい文字列を変数bar
に割り当てます。
bar << "hello"
文字列のインプレース連結を行います-bar
新しい文字列には設定されませんが、保持している文字列は変更されます。
したがって、<<
barとfooを使用すると、同じオブジェクトへの参照を維持し=
ますが、barのみを使用すると新しい値を取得します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加