Rubyのシンボルについて曖昧な部分まとめてみた

こんにちは。

私はPHPerですが、Rails、chef触ってるのでRubyも使っています。その際、Ruby特有のシンボルについてよく忘れてしまうので、今回は備忘録としてまとめました。

そもそもシンボルとは?

ざっくりと、Rubyのシンボルはハッシュのキーを表現するのによく使われるものです。文字列と近いが、少々性質が違ってます。ハッシュのほうが文字列より早いです。詳しいシンボルの説明は以下のサイトに詳しく載っています。

http://melborne.github.io/2008/08/02/Ruby/

http://jutememo.blogspot.jp/2008/01/ruby.html

シンボルでハマりそうな部分

シンボルでは「-」を使えない。

なので、:key-key’ value’は宣言できず、’key-key' => ’value’ と文字列で表現します。

hash = { :key-key 'value' }       #ムリ 
hash = { 'key-key' => 'value' } #ハッシュムリなので、文字列で

こんな書き方もいける

Ruby1.9以降でしか使えない記法があります。

hash = { :hoge => 'hoge-value', :fuga => 'fuga-value' } #Ruby1.8
hash = { hoge: 'hoge-value', fuga: 'fuga-value' }Ruby1.9以降

Railsでは最後の引数がハッシュの場合{}を省略できる

シンボルではないですが、曖昧になることがありました。 最後の引数がハッシュの場合は{}括弧は省略可能です。以下は同じ意味です。

stylesheet_link_tag "application", { media: "all", "data-turbolinks-track" => true }
stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true

今書いたことはRailsチュートリアルに書いてありますので、詳しくはそちらをご覧ください。

http://railstutorial.jp/chapters/rails-flavored-ruby?version=4.0#sec-hashes_and_symbols