概要
文字列でクラス名を作成してその文字列からクラスのオブジェクトを作成する方法を紹介します
環境
- CentOS 7.3.1611
- ruby 2.3.3p222
コード
こんな感じです
Module.const_get を使うと簡単に実現できます
class Hoge
attr_accessor :name
def initialize name
@name = name
end
end
klass_name = "Hoge"
klass = Module.const_get(klass_name)
hoge = klass.new 'jiro'
p hoge.name
# error
klass_name = "Fuga"
klass = Module.const_get(klass_name)
ちなみにクラスが存在しない場合は NameError になります
uninitialized constant Module::Fuga (NameError)
0 件のコメント:
コメントを投稿