個人メモです。
オブジェクトの値の取得方法で、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
シンボルを使うとエラーになる。