[解決済み] Rubyで文字列を構築するとき、なぜシャベル演算子(<<)がプラスイコール(+=)よりも好ましいのですか?
2022-04-23 16:28:11
質問
RubyのKoansに取り組んでいます。
は、その
test_the_shovel_operator_modifies_the_original_string
での高安
about_strings.rb
には、次のようなコメントがあります。
Rubyプログラマーは、プラス演算子よりもシャベル演算子(<<)を好む傾向があります。 等号演算子(+=)を使って文字列を構築します。 なぜですか?
私の推測では、スピードが関係していると思うのですが、ショベルのオペレーターが速くなるような水面下の動作が理解できていません。
どなたか、この好みの背景を詳しく説明していただけませんか?
解決方法は?
証明する。
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()
で、レシーバをインプレースで変更します。
関連
-
[解決済み] Rubyで新しい文字列を作成せずに文字列をトリミングする標準的な方法は何ですか?
-
[解決済み] Gemfile が見つかりません。
-
[解決済み] Rubyのコロン演算子とは何ですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を連結する方法として好ましいのはどれですか?
-
[解決済み] 2次元配列の反復処理において、ループの順序がパフォーマンスに影響するのはなぜですか?
-
[解決済み】Rubyで条件演算子(? :)を使うには?
-
[解決済み】Rubyの<=>(スペースシップ)演算子って何?
-
[解決済み】Rubyの->演算子って何?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】未定義のメソッド(NoMethodError)ruby
-
[解決済み] Rubyのメソッド'to_sym'は何をするのですか?
-
[解決済み] Ruby 'require' エラー: そのようなファイルをロードできない
-
[解決済み] Rubyでnil値をマッピングして削除する方法
-
[解決済み] Gem::Specification.reset中に未解決のスペックがある。
-
[解決済み] gemのインストール中に "permission denied "エラーが発生するのはなぜですか?
-
ERRORの問題を解決します。rails のインストール時に gem ネイティブ拡張のビルドに失敗しました。
-
[解決済み] 変数が整数であるかどうかのチェック
-
[解決済み] 構文エラー、予期しない ',', 期待する ')' 。
-
[解決済み] Rubyで文字列の連結を行う