1. ホーム
  2. ruby

[解決済み] Rubyのコロン演算子とは何ですか?

2022-02-07 11:25:17

質問

というとき { :bla => 1, :bloop => 2 } は、具体的に何をするのでしょうか? : を行うのでしょうか?文字列に似ているが、なぜか記号である、という話をどこかで読んだことがあります。

コンセプトが超わかりにくいのですが、どなたか教えてください。

どのように解決するのですか?

:foo は"foo"という名前のシンボルです。シンボルには、同じ名前のシンボルは2つとも同じになるという明確な特徴があります。

"foo".equal? "foo"  # false
:foo.equal? :foo    # true

これにより、2つのシンボルを比較するのが非常に速くなります(文字列のようにすべての文字を比較するのではなく、ポインタの比較だけが行われるため)。また、同じシンボルのコピーが大量に出回ることもありません。

また、文字列と違って、シンボルはイミュータブルです。