2017年7月5日水曜日

Ruby で文字列からクラスのオブジェクトを生成する方法

概要

文字列でクラス名を作成してその文字列からクラスのオブジェクトを作成する方法を紹介します

環境

  • 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 件のコメント:

コメントを投稿