読者です 読者をやめる 読者になる 読者になる

rubyで動的にクラス名を使いたいときはObject.const_getつかうらしい

perlで動的にクラス名を決めたいときはこんな感じに突っ込んで呼び出してやるといけるんですけど、

use strict;
use warnings;

package Hoge;

sub hello {
    print "hello\n";
}

package main;

my $str  = "Hoge";

$str->hello();

これ、rubyで同じことやろうとすると、ruby的にはこの$strは文字列なのでそんなメソッドありませんよというエラーがかえってくるのでしょうが無いからしらべたらObject.const_getを使えばいいということだったのでメモしておく。(ググり方が悪かったのか、メタプログラミング ruby Classとかやっても最初でてこなかった)

class Hoge
    def hello
        puts "hello"
    end
end

str = "Hoge"
Object.const_get(str).new.hello

http://www.ruby-doc.org/core-2.0/Module.html#method-i-const_get