Thread overview
'const ref' yerine yeni 'in ref'
Sep 16, 2012
Salih Dinçer
Sep 18, 2012
Salih Dinçer
September 16, 2012

Bilgilendirme için teşekkürler hocam...

Bugün kesirli sayılar ile ilgili işlem yapmayı kolaylaştıran yapı üzerinde çalışırken "in ref" hariç bir çok olasılığı ilk defa denedim. Tam da bunu akabinde bu bilgi olayı perçinledi.

Başarılar...

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

September 16, 2012

Giriş parametreleri normalde 'in' olarak işaretleniyordu. 'in' parametrenin değiştirilmesine izin vermez.

http://ddili.org/ders/d/islev_parametreleri.html

in'in sıkıntısı, yapı nesnelerini işleve kopyalayarak göndermesidir (yapılar değer türü olduklarından). Belirli bir yapı türünün nesnelerinin kopyalanma bedeli büyük olduğunda (veya hiç mümkün olmadığında) 'in' yerine biraz da C++'tan alışkanlıkla 'const ref' kullanılır:

void foo(const ref Yapım nesne)

(Aslında 'ref const' da oluyor.)

2.060 ile birlikte 'in ref' de yasalmış:

void foo(in ref Yapım nesne)

Aslında tam aynı anlamda değiller çünkü 'in' ayrıca 'scope' belirtecini de içerir. (scope yukarıdaki bağlantıda geçiyor ama henüz hiçbir derleyici onu desteklemiyor.)

Ali

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

September 16, 2012

Evet, ben de kendi örneklerimdeki 'const ref'leri 'in ref'e dönüştürmek istiyorum.

Ali

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

September 18, 2012

Bu durumda D'de program yazarken bu alışkanlığı edinmemiz faydalı olacak...

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

September 18, 2012

Küçük yapıları yine de yalnızca 'in' olarak geçirmek daha hızlı olabilir. ref perde arkasında göstergelerle gerçekleştirildiğinden yapının üyelerine erişmek için o gösterge üzerinden zıplanması gerekecektir. O üye erişimi daha yavaş olabilir.

Ama her zaman olduğu gibi en doğrusu denemek. Örneğin ben modern mikro işlemci teknolojilerini pek bilmiyorum. İşlemcinin iç belleği filan da düşünülünce belki de gösterge üzerinde zıplamak daha yavaş değildir.

Evet, denemek gerek. :)

Ali

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