能够从另一个类中调用一个类的正确结构是什么?
我可以使用MyObject.new
来致电MyModule::MyClass::MyObject.new()
但是,我更愿意使用以下方式来调用它:
MyModule::MyClass.myobject.new()
如何通过执行此操作来构造我的代码?
module MyModule
class MyClass
class MyObject
def initialize(value)
@value = value
end
def method1
"This is a #{value}"
end
end
end
end
答案 0 :(得分:1)
您需要在myobject
上定义方法MyClass
,该方法返回MyObject
...
module MyModule
class MyClass
class MyObject
end
def self.myobject; return MyObject; end
end
end
答案 1 :(得分:0)
如果我对您的理解正确,则您具有某个类的变量,并且想要创建同一类的新对象。假设您所有的类都有一个空的构造函数,则可以执行
myobject.class.new()
如果您还希望使新对象具有与另一个对象相同的内部状态,请编写一个方法
class MyMethod
def clone
...
end
end
执行此任务。
答案 2 :(得分:0)
这里的答案是正确的,但是不要这样做,这不是标准的,对于任何阅读您的代码的人来说,都会造成混淆。
MyModule::MyClass.my_object_instance
class MyClass
def self.my_object_instance
MyObject.new
end
end
如果想用更短的方法来创建类的实例,最好创建一个工厂方法来返回该类的新实例。