SORU
17 NİSAN 2012, Salı


'ler arasında fark Ruby'In dup ve klonlama yöntemleri?

Ruby docs for dup ki:

Genel olarak, clone dup alt sınıflar farklı semantiği olabilir. clone bir nesneyi çoğaltmak için kullanılırken, iç durumunda, dup dahil olmak üzere genellikle alt nesne sınıfının yeni bir örneğini oluşturmak için kullanır.

Ama bazı test yaptığımda buldum aslında hepsi aynı:

class Test
   attr_accessor :x
end

x = Test.new
x.x = 7
y = x.dup
z = x.clone
y.x => 7
z.x => 7

İki yöntem arasındaki farklar nelerdir?

CEVAP
17 NİSAN 2012, Salı


Alt sınıflar bu yöntemleri farklı semantiği sağlamak için geçersiz kılabilir. Object kendi içinde, iki önemli farklar vardır.

, clone ilk singleton sınıfı kopya, dup yok iken.

o = Object.new
def o.foo
  42
end

o.dup.foo   # raises NoMethodError
o.clone.foo # returns 42

dup yok iken ikinci, clone korur donmuş durumu.

class Foo
  attr_accessor :bar
end
o = Foo.new
o.freeze

o.dup.bar = 10   # succeeds
o.clone.bar = 10 # raises RuntimeError

Rubinius implementation for these methods çok açık olduğu için sık sık bu soruların cevapları için kaynağım, ve oldukça uyumlu Yakut bir uygulama.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011
  • TechShowsYou

    TechShowsYou

    3 Mart 2011
  • The Computer Chronicles

    The Computer

    7 Kasım 2012