Rubyで変数から定数を得る

はいはい。例によって twitter のログです。

20:57:16 wtnabe< Ruby で変数の中身を定数として参照して #{var}.new みた
いなことってできないよね。eval しか方法ないのかな。

(この間、ご飯を食べる)

21:11:01 finalfusion> @wtnabe 変数がクラス名を抱えていて、そこからイン
スタンスをつくりたい?
21:20:02 m_seki> @wtnabe const_get('ClassName') ?
21:29:40 wtnabe< @m_seki おぉ。できました! ありがとうございます!
const_get() ってそういう意味だったんですね。
21:30:53 wtnabe< @finalfusion ですです。疑問を twitter に投げてご飯を食
べてたら解決しましたw
21:47:01 finalfusion> @wtnabe const_get 書こうとしたらすでに @m_seki さ
んがががw

なるほど。

こんな風に使います。

def namespaces
  return %w(dotfiles firefox)
end

namespaces.each { |n|
  namespace n do
    utils = Object.const_get( n.capitalize ).instance

なるほどなぁ。なんとなく String#to_const みたいなメソッドがあるのかと思ってたんだけど、そういうんじゃないのね。

More