From: TAKAHASHI Masayoshi Date: 2001-04-24T12:45:59+09:00 Subject: [ruby-talk:14132] Re: RCR: getClassFromString method Hi, Marko Schulz wrote: > I would use a factory-method for this: > > class ToolFactory > > def ToolFactory.getTool > case $PLATFORM > when "Unix" then Tool_Unix > when "PC" then Tool_PC > else nil > end > end > > end I like using Hash rather than case-when dispatching. class ToolFactory @@platform2tool = { "Unix" => Tool_Unix, "PC" => Tool_PC } def ToolFactory.getTool @@platform2tool[$PLATFORM] end end If you would like to use ruby's native platform information as [ruby-talk:14126], you could use Regexp as key. class ToolFactory @@platform2tool = [ [/^(.*)linux$/, Tool_Linux], [/solaris/, Tool_Solaris] ] def ToolFactory.getTool @@platform2tool.each{|platform, klass| if platform =~ RUBY_PLATFORM return klass end } return nil end end Regards, TAKAHASHI Masayoshi (maki@inac.co.jp)