On Wednesday, 15 June 2022 at 16:34:22 UTC, dunecourser wrote:
>Bence başlığın isminde okuduğunuzdan daha ilginç bir konu bu.
D'nin üç ayrı döngüsü var: while, for ve foreach. Bunların her biri istenirse birbirinin yerine kullanılabilir, gelgelelim kullanıcının döngüyü ne kadar hassasiyetle kontrol etmek istediğine bağlı olarak tercihi değişecektir. Hassasiyete göre sıralarsak while > for > foreach olacağından şüphemiz yok, değil mi? Asıl değinmek istediğim de bu işte bu.
Teorik olarak tek döngü var ama Assembly'de bile dallanma komutları mikroişlemciye göre çok fazladır; sıralasak saymaya gücümüz yetmez! Ama en temele inme niyetimiz yok, öyle değil mi?
D'deki bir başka döngü label'lar. Örneğin:
Loop:
// işlemler...
goto loop;
Belki de bu en basiti ve her dilde yoktur. Ayrıca hemen hemen her dilde olan switch case
ile de döngü yapmanız mümkün hem de çok işlevsel. Tıpkı `for()' ile yaptığımız çift değişkenli döngülerin de ötesinde!
Bence foreach()
hepsinden ayrılır ve onu ayrı bir kefeye koymalıyız. Sebepleri aşikar ama çok isterseniz örneklerle üzerinde tartışabiliriz?
while()
ise candır, canandır! Tam anlamıyla anlamak için oturup onlarca örnek yazmalısınız. Basittir ama do ile kullanıldığında (pek sık kullanılmaz) başka bir kişiliğe bürünebilir. Yanlış hatırlamıyorsam Pascal'da da bu 2. kişiliğin karşılığı "repeat until()" olması lazım. C ve türevleri bunu çok iyi geliştirmiş.
Son olarak işlevleri birbirleriyle çağırmak da döngü yapmak için yeterlidir ama bellek yeter mi tartışılır. Bir recursive function ne kadarmümkünse o da mümkündür herhalde 😀
On Wednesday, 15 June 2022 at 16:34:22 UTC, dunecourser wrote:
>DMD inanılmaz hızlı bir derleyici. Hem de kullanıcının özensizsizliği yüzünden Allah bilir ne kadar optimizasyonla uğraştığı hâlde.
Aslında LDC'ye göre çok yavaş ama sahip olduğu yetenekler çok fazla. Aralıkları hesaba kattığımızda foreach()
de çok güçlüdür. Ona benzeyen şu Template olanağı da konuşmalı:
auto result = range.each!(a => ... );
Son görüntülü sohbetimizde bu konuya değindik hatta Ali hoca kaynak kodlarına da baktı.
Sevgiler, saygılar...