(Ruby)(Hashie::Mash ってなんぞや?)
ここ最近 私は RubyとTwitterで遊んでますが
RubyGemsのTwitter の followersとかのデータ構造を 見ていてふと思ったのが
Hashie::Mash ってなんぞや
ってコトで、 ハッシュのようでいて ハッシュとは違う動きをしているものが
なんか 無性に気になったわけです
そこで調べてみると、 どうやら RubyGems に Hashie というものがあるらしい
多分これって ハッシュの値に オブジェクト指向な感じで
アクセスできるようにする感じなのかな?、 まぁ よくわからんけど 笑)
ということで 早速
ということで スクリプト書くけど 最初の部分はこんな感じかな
それでは サンプル的な データを作ってみる事に・・・
簡単な ツリー構造も実現してみようという事で
まずは ハッシュ内ハッシュの ハッシュの部分と < わかりにくっ 笑)
もう一個上のレベルの ハッシュを 凄く単純に書くと・・・
もちろん これは一度に定義しようとすれば
で、 この段階では dat は まだ 単なるハッシュなんですね
dat を Hashie::Mash にするためには
と、いうことは・・・
これまでの作業を 詰め込んでしまえばこんな風に書けますよね
で、それぞれの 値にアクセスするには
ということで Hashie::Mash ってのは 多分こんな感じのものってコトでしょうね。
RubyGemsのTwitter の followersとかのデータ構造を 見ていてふと思ったのが
Hashie::Mash ってなんぞや
ってコトで、 ハッシュのようでいて ハッシュとは違う動きをしているものが
なんか 無性に気になったわけです
そこで調べてみると、 どうやら RubyGems に Hashie というものがあるらしい
多分これって ハッシュの値に オブジェクト指向な感じで
アクセスできるようにする感じなのかな?、 まぁ よくわからんけど 笑)
ということで 早速
gem install hashieとしてインストール
ということで スクリプト書くけど 最初の部分はこんな感じかな
#!ruby -Ku require 'rubygems' require 'hashie'
それでは サンプル的な データを作ってみる事に・・・
簡単な ツリー構造も実現してみようという事で
まずは ハッシュ内ハッシュの ハッシュの部分と < わかりにくっ 笑)
もう一個上のレベルの ハッシュを 凄く単純に書くと・・・
dat_sub = { :sub_data1 => "0123", :sub_data2 => "4567", :sub_data3 => "89AB" } dat = { :data1 => "abcd", :data2 => "efgh", :data3 => "ijkl", :data4 => dat_sub }という感じで
dat-+--data1 +--data2 +--data3 +--data4-+--sub_data1 +--sub_data2 +--sub_data3という 構造になるはずです
もちろん これは一度に定義しようとすれば
dat = { :data1 => "abcd", :data2 => "efgh", :data3 => "ijkl", :data4 => { :sub_data1 => "0123", :sub_data2 => "4567", :sub_data3 => "89AB" } }ってな感じでも書けますよね
で、 この段階では dat は まだ 単なるハッシュなんですね
dat を Hashie::Mash にするためには
dat = Hashie::Mash.new(dat)みたいな感じにすればいいみたいです
と、いうことは・・・
これまでの作業を 詰め込んでしまえばこんな風に書けますよね
#!ruby -Ku require 'rubygems' require 'hashie' dat = Hashie::Mash.new({ :data1 => "abcd", :data2 => "efgh", :data3 => "ijkl", :data4 => { :sub_data1 => "0123", :sub_data2 => "4567", :sub_data3 => "89AB" } })
で、それぞれの 値にアクセスするには
dat.data1 dat.data4.sub_data3で出来るようになります
ということで Hashie::Mash ってのは 多分こんな感じのものってコトでしょうね。