【发布时间】:2013-04-01 22:42:53
【问题描述】:
我想根据初始参数初始化不同类的实例。例如,我希望Hello.new(true) 和Hello.new(false) 具有不同的行为。准确地说,我希望他们创建不同类的实例。
我如何在 Ruby 中实现这一点?
class Name1
end
class Name2
end
class Hello
def initialize(opts)
if opts
Name1.new
else
Name2.new
end
end
end
【问题讨论】:
-
是Simone给出的答案,是你要找的那个吗?如果是这样,请接受它或向我们提供有关您需求的更具体信息。由于您的要求不明确。
-
隐含的要求是
Hello.new( nil )返回一个Name2类的对象,而Hello.new( some_non_nil_options )返回一个Name1类的对象。 Simone 的回答是有效地建议 不要 尝试以这种方式覆盖new,而是使用不同的方法名称,以便更容易和更标准地返回可能在其中一个中的对象可能的课程。这是一个很好的答案 IMO,但如果由于某种原因使用的方法绝对必须是Hello.new,则不符合要求
标签: ruby oop class proxy instance