我有一个模块,它存在于两个相似的类中.模块中包含的一些方法供两个类使用相同的方法返回一个新实例.
但是如何在模块中编码应该调用包含类的构造函数?
一个简化的例子:
module Point3D
def initialize(x,y,z)
@x = x
@y = y
@z = z
end
def * (scalar)
<myclass>.new(@x * scalar, @y * scalar, @z * scalar)
end
end
class Vertex
include Point3D
end
class Vector
include Point3D
end
Run Code Online (Sandbox Code Playgroud)
那么在*如何调用构造函数的定义中,在Vertex类的上下文中它返回了一个新的Vertex,并且在Vector类的上下文中它返回了一个新的Vector,而没有在每个类中重新声明所有这些方法?
小智 13
您可以调用'class'方法来获取obj类.
对于这种情况,它是
def * (scalar)
self.class.new(...)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5589 次 |
| 最近记录: |