Я возился с ruby и opengl в развлекательных целях, и я решил написать несколько классов 3d вектор / плоскость / и т. Д., Чтобы навести порядок в математике.
упрощенный пример:
class Vec3
attr_accessor :x,:y,:z
def *(a)
if a.is_a?(Numeric) #multiply by scalar
return Vec3.new(@x*a, @y*a, @z*a)
elsif a.is_a?(Vec3) #dot product
return @x*a.x + @y*a.y + @z*a.z
end
end
end
v1 = Vec3.new(1,1,1)
v2 = v1*5 #produces [5,5,5]
что все отлично и денди, но я тоже хочу иметь возможность написать
v2 = 5*v1
, для которого требуется добавить функциональность в Fixnum, Float или что-то еще, но я не смог найти способ перегрузить или расширить умножение fixnum без его полной замены. это возможно в рубине? какие-нибудь советы?
(очевидно, я могу просто написать все мои умножения в правильном порядке, если мне нужно)