いまいちよく分かっていなかった Ruby のシンボルについて少し調べた。 「文字列とどう違うの?」という疑問の答えはこういうことらしい。 irb(main):001:0> "abc" == "abc" => true irb(main):002:0> "abc".equal?("abc") => false irb(main):003:0> :abc == :abc => true irb(main):004:0> :abc.equal?(:abc) => true == は表現を比較し、equal? はオブジェクトの同一性を比較する。文字列は同じ表現が同一の実体とは限らないけど同じ名前のシンボルは同じ実体である。 Ruby でシンボルが使われる典型的な例はハッシュのキー。 irb(main):010:0> {:key1 => "one", :key2 => "two"} => {:key