只有一个initialize方法?

把java忘了吧
ruby可以有多个类的构造函数initialize()吗?也就是overload构造函数.
答:不可以有多个initialize(),也不能overload method。参考下面的文章
http://blade.nagaokaut.ac.jp/cgi ... by/ruby-talk/244503
http://blade.nagaokaut.ac.jp/cgi ... by/ruby-talk/244632
http://blade.nagaokaut.ac.jp/cgi ... by/ruby-talk/244780

解决方法:
1、
a = Klass.create_scenario_one(...)
b = Klass.create_scenario_two(...)
2、使用hash参数
3、使用缺省参数
4、使用class method (factory method pattern)
#-------------------------------
class Point

  def self.create_cartesian(x,y)
   allocate.instance_eval do
    @x = x
    @y = y
    self
   end
  end

  def self.create_polar(length,angle)
   allocate.instance_eval do
    @x = length * Math.cos(angle)
    @y = length * Math.sin(angle)
    self
   end
  end

end
#-------------------------------

How does ruby choose which method to invoke?
http://www.rubycentral.com/faq/rubyfaq-7.html
这么多种方法。。。。感谢指导
引用:
原帖由 bob.yang 于 2007-10-5 15:13 发表
ruby可以有多个类的构造函数initialize()吗?也就是overload构造函数.
答:不可以有多个initialize(),也不能overload method。参考下面的文章
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk ...
引用:
原来我的表达能力真的有问题,第四个人才看懂我在问什么。
引用:
原帖由 maninred 于 2007-10-5 22:20 发表


原来我的表达能力真的有问题,第四个人才看懂我在问什么。

原来可以这样阿,我还忘了有hash参数。好像用hash参数和用工厂方法比较优雅。

看来bob是高手哦。我在ruby-lang的irc房间里看了很久也看不到 ...
低低手我问问题,高手来解答,高高手来总结。

学习了,谢谢上面热情的各位。
传Hash
Like Something.create :name => "hello world"