人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Rubyのハッシュについて質問です。
PHPでは以下のような連想配列に初期化なしでいきなり代入できますが、
Rubyではどのように書きますか?
ハッシュの宣言方法から代入までを書いてください。

<?php

$hash[5]['color']['white'] = "#ffffff";

?>

●質問者: is0me
●カテゴリ:コンピュータ インターネット
✍キーワード:COLOR PHP Ruby ハッシュ 初期化
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● いわどん
●35ポイント ベストアンサー

私も知りませんでしたので調べてみましたが、以下の方法がわかりやすかったです。

def recursive_hash
 Hash.new {|h, k| h[k] = recursive_hash}
end
hash = recursive_hash
hash[5]['color']['white'] = "#ffffff"
p hash # => {5=>{"color"=>{"white"=>"#ffffff"}}}

この方法はStack Overflowというサイトで紹介されていました。

http://stackoverflow.com/questions/3356002/nested-hash-defined

◎質問者からの返答

解決できました、ありがとうございます。


2 ● a-kuma3
●35ポイント

無理やり、連想配列っぽくするなら、↓みたいな感じかな。

class NestedHash < Hash
 def [] (k)
 unless has_key? (k)
 self[k] = NestedHash.new
 end
 v = super(k)
 end
end

hash = NestedHash.new


hash[5]['color']['white'] = "#ffffff"

質問の題意と外れるかもしれないけど、定義を持つテーブルを作りたいのなら、入れ子の連想配列を

使うよりも、もっといい方法があると思うな。

http://www.ruby-lang.org/ja/

◎質問者からの返答

ありがとうございます。

やり方はいろいろありますね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ