Я работаю над решением технических чертежей (svg/ruby). Я хочу манипулировать прямоугольниками и иметь метод add!
в этом классе:
class Rect
def add!(delta)
@x1+=delta
... # and so on
self
end
end
Мне также нужен метод add
, возвращающий Rect
, но не манипулирующий self
:
def add(delta)
r=self.dup/clone/"copy" # <-- not realy the 3 and no quotes, just in text here
r.add! delta
end
dup
и clone
не делают ничего, кроме:
def copy; Marshal.load(Marshal.dump(self)); end
делает.
Почему такая базовая функциональность не существует в простом Ruby? Пожалуйста, просто не говорите мне, что я мог бы перевернуть add
и add!
, позволяя add
выполнить задание и add!
вызвать его.