[#39989] TCPSocket.new でスレッドが止まる。 — take_tk <ggb03124@...>

たけ(tk)です。

15 messages 2004/09/02

[#40018] yaml.rbとdate.rbを組み合わせて使った際の問題 — "Keisuke Minami" <keisuke@...>

こんにちは。三並と申します。

14 messages 2004/09/07
[#40020] Re: yaml.rbとdate.rbを組み合わせて使った際の問題 — IWATSUKI Hiroyuki <don@...> 2004/09/07

岩月と申します。

[ruby-list:40032] Re: 動的なクラス名

From: Nowake <nowake@...>
Date: 2004-09-07 16:42:22 UTC
List: ruby-list #40032
野分です。

ちょっと主旨から外れますが、こうすると指定されたmodule内のクラスの
factoryがつくれます。

やる気があればnew を別のメソッドでラップする/factory(という名のHash)に
MethodやProcを与えるなどして、さらに汎化することができます。
まあ、自分のプログラムじゃこのまま使っていますが……


def create_factory( owner_module )
  factory = Hash.new
  owner_module.constants.each do | n |
    factory[n.to_sym] = owner_module.const_get( n )
  end
  factory
end

module Test
  class A
    def test; "Class A" end
  end
  class B
    def test; "Class B" end
  end
  class C
    def test; "Class C" end
  end
end

f = create_factory( Test )
p f["A".to_sym].new.test
p f["B".to_sym].new.test
p f["C".to_sym].new.test



In This Thread

Prev Next