У меня есть модуль, который существует для включения в два похожих класса. Некоторые из методов, которые будут включены в модуль для одинакового использования обоими классами, возвращают новый экземпляр.
Но как закодировать в модуле, что должен вызываться конструктор для содержащего его класса?
Упрощенный пример:
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
Итак, в определении *
как я буду вызывать конструктор так, чтобы в контексте класса Vertex он возвращал новый Vertex, а в контексте класса Vector возвращал новый Vector без повторного описания всех таких методов в каждом классе?