12

製図 (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逆に and 、仕事をさadd!せて、それを呼び出すことができるとは言わないでください。addadd!

4

3 に答える 3

0

次のようなものを使用できないのはなぜですか。

new_item = Item.new(old_item.attributes)
new_item.save!

これにより、すべての属性が既存のアイテムから新しいアイテムに問題なくコピーされます。他のオブジェクトがある場合は、それらを個別にコピーできます。

オブジェクトをコピーする最も簡単な方法だと思います

于 2015-03-17T19:50:54.507 に答える