タグ

functional-comparisonとobject-copyに関するnabinnoのブックマーク (2)

  • instance method Object#clone (Ruby 1.8.7)

    clone -> object[permalink][rdoc] dup -> object オブジェクトの複製を作成して返します。 dup はオブジェクトの内容, taint 情報をコピーし、 clone はそれに加えて freeze, 特異メソッドなどの情報も含めた完全な複製を作成します。 clone や dup は浅い(shallow)コピーであることに注意してください。後述。 [EXCEPTION] TypeError: TrueClass, FalseClass, NilClass, Symbol, そして Numeric クラスのインスタンスなど一部の オブジェクトを複製しようとすると発生します。 obj = "string" obj.taint def obj.fuga end obj.freeze p(obj.equal?(obj)) #=> true p(obj == o

    nabinno
    nabinno 2014/11/02
    "clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指し ている先(たとえば配列の要素など)までは複製しません"
  • Object#clone (Ruby 3.4 リファレンスマニュアル)

    clone(freeze: nil) -> object[permalink][rdoc][edit] dup -> object オブジェクトの複製を作成して返します。 dup はオブジェクトの内容をコピーし、 clone はそれに加えて freeze, 特異メソッドなどの情報も含めた完全な複製を作成します。 clone や dup は浅い(shallow)コピーであることに注意してください。後述。 TrueClass, FalseClass, NilClass, Symbol, そして Numeric クラスのインスタンスなど一部のオブジェクトは複製ではなくインスタンス自身を返します。 [PARAM] freeze: true を指定すると freeze されたコピーを返します。 false を指定すると freeze されていないコピーを返します。 nil を指定すると、レシーバが

    nabinno
    nabinno 2014/11/02
    cloneメソッドはオブジェクトの凍結状態、汚染状態、信頼状態、また特異メソッドをコピーする。dupメソッドは凍結状態と特異メッソドをコピーしない。
  • 1