個人メモです。
オブジェクトの値の取得方法で、obj[:a]とobj['a']では対象となるデータの構造が異なる。
オブジェクトがシンボルで作成されているか文字列かによる。
文字列を使ったオブジェクトをハッシュと呼ぶ。
## シンボルを使ったオブジェクト
obj = {a:1, b:2}の場合、プロパティ名はシンボルとなる。
データ取得時の指定もシンボルで行う。
オブジェクト
obj = {a:1, b:2}
=> {:a=>1, :b=>2}
データの取得
## OK
obj[:a]
=> 1
## NG
obj['a']
=> nil
シンボル形式のオブジェクトのプロパティ名を' 'で指定するとエラーになる。
## 文字列を使ったオブジェクト
obj2 = {"a" => 1, "b" => 2}のように文字列で作成したオブジェクトのデータ取得は文字列で指定する。
## オブジェクト定義
obj2 = {"a" => 1, "b" => 2}
=> {"a"=>1, "b"=>2}
## データ取得
obj2['a']
=> 1
obj2["a"]
=> 1
## NG
obj2[:a]
=> nil
シンボルを使うとエラーになる。