マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

連想配列の要素にドットでアクセスしてみる

連想配列の要素をhash[hoge]でなくhash.hogeみたいにアクセスしたくなったので、method_missingを使ってみた。こんなやり方でいいのかは知らない。そして取得はできるけど、要素の追加と変更ができない。うーん

class Hash
    def method_missing(name, *args)
        return self[name]
    end
end

h = {a: "bbb", c: "ccc"}
puts h.a

要素の追加と書き換えもできるようになりました

class Hash
    def method_missing(name, *args)
        if args.size > 0
            self[name.to_s().sub('=', '').to_sym()] = args[0]
        else
            return self[name.to_sym()]
        end
    end
end

h = {a: "bbb", c: "ccc"}
h.a = "ddd"
h.b = "d-kami"
puts h.a
puts h.b

OpenStructというものを教えてもらいました。それでいいんじゃね?状態です