Ruby 初心者スレッド Part 27at TECH
Ruby 初心者スレッド Part 27 - 暇つぶし2ch94:90
09/04/06 20:43:51
>>91
いただいたコードを見ると、const_getでautoloadしないわけではなかったのですね。
今一度自分のコードを見直してみたところ、const_getでautoloadできました。(解決!)

最初、Javaのように文字列からクラスを生成する書き方ばかり想像していて
>>88で説明のための適当なコードを載せたばかりに、余計な手間をおかけしました。
いまさらですができているコードを書いておきます。

#testfactory.rb
module TestFactory #モジュール内のメソッドは公開済み
 autoload :TestClass1, "testclass1.rb"
 autoload :TestClass2, "testclass2.rb"
 
 def get_instance(classname, *args) #インスタンスを返す
  # eval("#{classname}.new(*args)) #>>88の時点のコード
  
  # require classname.downcase       #>>90の時点のコード(レシーバ違いでrequireが必要だった)
  # Method.const_get(classname).new(*args) #requireしないと=> uninitialized constant Method::TestClass1
  
  self.const_get(classname).new(*args) #現在のコード(問題なし)
 end
 
 #その他の同種のメソッド
 def get_class(classname);       self.const_get(classname); end      #クラスを返す
 def method_missing(classname, *args); self.const_get(classname).new(*args); end #同じくインスタンスを返す
end


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch