June 09, 2020

190"uncu satira baktim. Soyle birsey var .

Buna postbit constructor diyolar galiba D'de ama benim iyi hatirlamadigim bir konu. Ben hep C++ Copy Ctor ile ozlestiriyorum ama biraz farkli galiba. Simdi okuyacagim bende. Sagol belirttigin icin.

this( this r)
{
	düşenTaşlar = r.düşenTaşlar.dup;
	bütünTaşlarım = r.bütünTaşlarım.dup;
	foreach ( per; r.balyalarım )
	{
		Balya* yeniBalya = new Balya( per.isRenk, per.taşlar.dup);
		balyalarım ~= yeniBalya;
	}

}

bu this( this r ) olayini hatirlayamadigim icin simdi anlayamadim hemen hatayi. Bu konuyu hatirladiktan sonra bakicagim bir daha.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 09, 2020

D'de de artık doğru dürüst kopyalayıcı (copy constructor) var:

https://dlang.org/spec/struct.html#struct-copy-constructor

Postblit eski bir olanak olarak kabul ediliyor ve kullanılması önerilmiyor. (Benim kitap bu konuda geri; içimde bir yaradır. :) )

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 10, 2020

Ali abi

Bu posblit dedigimiz sadece bir memcpy operasyonu "MU" dur. Bunun C++ copy ctor ile farki nedir.

D'nin copy ctor'u C++'daki gibi midir farklar varmidir? Neden sonradan eklenmistir ? Acmak istermisin bu konulari acaba?

Erdem

Düzenleme yaptım soru ekini unutmuşum düzensiz yazdığımdan anlam çok değişik olmuş

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 10, 2020

BLIT, "bit level transport"un kısası. (Evet, orada I olmamalı ama öyle.) D, yapı nesnelerini istediği gibi bir yerden yere kopyalama hakkını saklı tutar(dı) çünkü yapı nesnelerini salt değerler olarak görürdü. Yapı nesneleri daha karmaşık amaçlar için de kullanılmaya başlanınca bu "shallow copy" sorun çıkartacağından, ortalığın BLIT sonrasında düzeltilmesi işlemleri "BLIT sonrası" anlamına gelen post-blit işlevine yerleştirildi.

Yani, nesnenin bitleri orada oraya taşınır; post-blit varsa çağrılır. Ama, işin güzeli, post-blit yaşamları sona ermek üzere olan geçici nesneler için çağrılmaz çünkü bunun sonucunda durumun düzeltilmesi gereken iki nesne değil, tek nesne vardır. Çünkü kaynak geçici nesne bir yere kopyalanmıştır ve yaşamı sona ermiştir; yani, sonuçta bir yerden bir yere "taşınmıştır." Bitlerin bir yerden başka bir yere geçirilmelerine dayanan "move" işlemi C++'ın da çok uzun zamandır çözmeyi hayal ettiği bir sorundur ve sonunda "rvalue reference" diye adlandırılmış olan bir olanakla çözülmüştür.

Özellikle Weka, post-blit'in yetersiz olduğu ve C++'taki gibi işleyen gerçek anlamda kopyalayıcının gerektiği konusunda bastırınca D'ye de "copy constructor" geldi ve DConf 2019'da açıklandı. Post-blit ile olan farklarını yukarıdaki bağlantıda görebilirsin. Ben de kitabı düzeltecek kadar ayrıntılı bilmiyorum.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

1 2
Next ›   Last »