Rubyの文字列とシンボルはどう違うの?
2023-12-01 05:54:58
質問
Rubyにおける文字列とシンボルの違いは何ですか、また、どのような場合にどちらを使うべきですか。
どのように解決するのですか?
主な違いは、1つの値を表す複数の記号が同一であるのに対し、文字列の場合はそうではないことです。 例えば
irb(main):007:0> :test.object_id
=> 83618
irb(main):008:0> :test.object_id
=> 83618
irb(main):009:0> :test.object_id
=> 83618
これらは3つのシンボルへの参照
:test
への3つの参照であり、これらはすべて同じオブジェクトです。
irb(main):010:0> "test".object_id
=> -605770378
irb(main):011:0> "test".object_id
=> -605779298
irb(main):012:0> "test".object_id
=> -605784948
これらは文字列 "test" への3つの参照ですが、すべて異なるオブジェクトです。
これは、シンボルを使用することで、アプリケーションによってはかなりの量のメモリを節約できる可能性があることを意味します。 同一の文字列を比較する場合は、オブジェクト ID だけでなく文字列の値も比較する必要があるため、はるかに遅くなります。
いつどちらを使うかについては、私は通常、ハッシュキーのような、文字列ではなく本当に一意な識別子が必要なものを除いて、ほとんどすべてのものに文字列を使用します。
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み] YAML の文字列を複数行に渡って分割するには?
-
[解決済み] textとvarcharの違い(character varying)
-
[解決済み] Rubyのincludeとrequireの違いは何ですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] 文字列を DateTime に変換する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyで記号をハッシュキーとして使う理由とは?
-
[解決済み] rvm use 2.0.0 --default を実行すると、"Warning! PATH is not properly set up" と表示される。
-
[解決済み] JSONファイルへの正しい書式での書き込み方法
-
[解決済み] Rubyのsend()は何をするのですか?
-
[解決済み] Capybaraで要素の正確なテキストをマッチングして要素を見つける方法
-
[解決済み] bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby [closed].
-
[解決済み] 文字列内の複数の空白と改行を削除する
-
[解決済み] RubyでCtrl-cをキャプチャする
-
[解決済み] Mavericks と Xcode 5.1 で Ruby Gem install Json が失敗する - unknown argument: '-multiply_definedsuppress'.
-
[解決済み] 配列に要素がない場合、その要素を追加します。