Scala'da, AnyRef.clone
sığ veya derin bir kopya yapıyor mu?Scala AnyRef.clone, sığ veya derin bir kopya yapıyor mu?
cevap
Kısa cevap: sığ.
-so-kısa olmasın cevap: Bu geçersiz etmiyorsa , AnyRef.clone() bunun uygulanması olarak Java'nın Object.clone() kullanır. Object.clone() ile
Javadoc: Sınıf nesnesi için
yöntem klon özel klonlama işlemi gerçekleştirir. Bu nesnenin sınıf arayüzü klonlanamaz uygulamaması halinde Birincisi, daha sonra CloneNotSupportedException atılır. Tüm dizilerin, klonlanmasının, Cloneable arabirimini uyguladığı kabul edilir. Aksi takdirde, bu yöntem, bu nesne sınıfının yeni örneği oluşturur ve bu nesnenin karşılık gelen alanların tam içeriği, düzenleme tarafından olarak ise tüm alanlarını başlatır; 'un içeriği, alanların kendileri klonlanmamıştır. Böylece, bu yöntem, bu nesnenin bir "sığ kopya", bir "derin kopyalama" işlemi gerçekleştirir.
unutmayın:
- AnyRef.clone(), Java onun meslektaşı gibi, onun çağrılabilir değildir yüzden her yerden, bir "korumalı" erişim düzeyine sahip.
- Çalıştırmak için clone() için Cloneable uygulamanız gerekecektir.
Uzun cevap: kullanmayın: mantıklı
Özeti geçersiz kılma klonu: Etkili Java, 2nd Edition, Öğe 11 okuyun. Daha iyi alternatifler var.
- 1. Nesne javascript derin veya sığ kopyaya itti?
- 2. Sığ bir kopya ile JavaScript dizileri içeren derin bir kopya arasındaki fark nedir?
- 3. Hard Copy vs Sığ kopya javascript
- 4. Java'da HashMap'i (sığ kopya değil) kopyalama
- 5. SQLAlchemy: Tembel yükleme kaçınarak sığ kopya
- 6. Derin Kopya veya VBA'da bir ADODB kayıt kümesini kopyalayın
- 7. C# Konu Güvenli Derin Kopya
- 8. Scala, kendi başına paralel bir şey yapıyor mu?
- 9. STL Konteynerlerini Geçmek Bir Kopyalama Yapıyor mu?
- 10. 'kopya'?
- 11. PHP derin klon nesnesi
- 12. Karmaşık Üçüncü Şahıs Nesneleri/Sınıfları'nın Derin Kopyası
- 13. Process Explorer, API'yi destekliyor mu veya Konsol Komutu'ndan çağrı yapıyor mu?
- 14. Kütüphane Projesi manifest dosyası birleştirme yapıyor mu?
- 15. XML Dize, Android'de ayrıştırma yapıyor mu?
- 16. ES6, adlandırılmış işlev ifadelerini gereksiz yapıyor mu?
- 17. clojure repl destek doğrulaması yapıyor mu?
- 18. C# Boş kopya sözlük?
- 19. jquery.extend (true, [], obj) bir kopya oluşturmuyor
- 20. JavaScript'te derin bir nesne yavaş mıdır? Eğer öyleyse ne kadar
- 21. std :: unique_ptr Derin bir kopya oluşturmaya çalışırken silinen bir işleve başvurmaya çalışılıyor Kopyalama
- 22. Mezar iskelesi herhangi bir şekilde işlem yapıyor mu?
- 23. Scala kurtarma veya kurtarma
- 24. --nlarks veya -n görevleri SLURM'de ne yapıyor?
- 25. jQuery desteğini VEYA seçicilerinde mi yapıyor?
- 26. Doktrin kaydının derin kopyası
- 27. NumPy'nin bir görünüm veya kopya oluşturup oluşturmadığını nasıl anlarım?
- 28. Scala ListBuffer (veya eşdeğeri) shuffle
- 29. Sığ nesne nesnesini ES6/ES7 içinde bir veya daha fazla özelliği mi bırakıyorsunuz?
- 30. Java'da polimorfik kopya Java'da
"Daha iyi alternatifler var." Bazılarına referans verir misin? –
1. Kurucu, C++ başına kopyalayın. 2. Scala 2.8.x'te yerleşik "kopya" yöntemiyle vaka sınıfı. 3. Değiştirilebilir nesneler kullanın: kopyalamaya gerek yok, sadece paylaşın. –
Yani C++ -like kopya kurucular aslında (tür) Scala'da iyidir? C++ dilinden geldim ve ilk kopya kurucularmı yapmadan önce bir noktayı kaçırıp kaçırmadığımı görmek istedim. Görünüşe göre ... iyi (nesnelerim değişebilir bir halde). – akauppi