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