For Want Of A Better Word

[ruby]シンボル「:」ってなんだべ

   

[参考]

・class Symbol

https://docs.ruby-lang.org/ja/latest/class/Symbol.html

・Railsを触る際知っていると便利なRubyの基礎 [ブロックとかシンボルとか]
http://qiita.com/kidach1/items/46a6e49b6306655ccd64

 

シンボルの用途

実用面では、シンボルは文字の意味を明確にします。`名前’を指し示す時など、 文字列そのものが必要なわけではない時に用います。

  • ハッシュのキー { :key => “value” }
  • アクセサの引数で渡すインスタンス変数名 attr_reader :name
  • メソッド引数で渡すメソッド名 __send__ :to_s
  • C の enum 的な使用 (値そのものは無視してよい場合)

シンボルを使うメリットは

  • 新しく文字列を生成しない分やや効率がよく、比較も高速。
  • 文字の意味がはっきりするのでコードが読みやすくなる
  • immutable なので内容を書き換えられる心配がない

大抵のメソッドはシンボルの代わりに文字列を引数として渡すこともできるようになっています。

 

 

うーん、、、ピンとこないなぁ。。。

 

文字列とシンボルの比較;

http://d.hatena.ne.jp/zariganitosh/20061118/1163851550

  • 例えば:actionシンボルは最初に利用した時に、一つのオブジェクトを生成*3して、そのオブジェクトを指し示すマークになる。
  • その後も同一のオブジェクトを指し示すマークであり続ける。
  • シンボルオブジェクトは文字情報を保持していて、その文字情報は不変である。
  • ‘action’文字列も一つのオブジェクト*4だが、プログラムの中で利用する度に、新たなオブジェクトとして発生する。

  • ちなみに:actionシンボルだと、以下のような結果になる。10回ともobject_idが同じだ。

ぬぉー。

 

連想配列・ハッシュの簡易記法

一番気になっていたのは下記。なんとなく、そうだと思っていたけど見つけた。

Ruby 1.9以降では、シンボルをキーとして扱う場合の特別な記法をサポート。
以下の二つは同義。
{ :hoge => ‘hoge’, :fuga => ‘fuga’}
{ hoge: ‘hoge’, fuga: ‘fuga’}

 

最後のが分かればとりあえずいいやー。

 - ruby

  関連記事

ruby-logo
【Rails】【ruby】既存のテーブルをrails,db:migrateに乗せる。

katow30it @ ウィキ – 既存のDBを用いてRailsアプ …

ruby-logo
[ruby][rails]form_tagのセレクトボックスの初期値設定

selecte …

ruby-logo
【Ruby】RailsをCentOS6.5へ。苦労した…

先の記事で埋め込みRuby環境は用意したけれど、いまいちぱっと作りたいものがなか …

ruby-logo
[ruby]処理時間時間計測

 

ruby-logo
rubyの基本 | ちょっときになったところメモ_3

メソッドについて 3種類 関数的メソッド printとか、ふつうのコマンドみたい …