Thread overview
D dilinde süslü parantezler kullanımı
Oct 27, 2015
cos00kun
Oct 27, 2015
cos00kun
October 27, 2015

C++ Diliyle çok kullanışlı bir konuda süslü parantezlerin içindeki değişkenlerin süzlü parantez dışında bellekten yok olması olayı idi ( Static vesaire değişken tanımlarını hariç tutarak konuşuyorum) Ancak aynı şeyi D dilinde tam olarak uygulayamadım acaba D dilinde örneğin main bloğu içinde bir blok tanımlayıp main bloğunda tanımlanan int d=5 değişkenini yine bu yeni bloğun içinde int d=5 olarak tanımlarsak sanki D dili hata veriyor gibi !! eğer bir yanlışlık yapmadıysam bu böyle ancak C++ ile aynı işi yaptığımda hangi blok işlem görüyosa ordaki değişken bellekte işlenip yine ona göre yaşam sürelerini tamamlamaktaydılar..
son bir kez code yazıp her iki dilde deneyeceğim umarım bu bir sorun değildir zira süslü parantez (Blok) lardaki bu değişken tanımlamaları ciddi bir avantajdır...
Ne kadar anlatabildim bilmiyorum ancak yarına code ilave edip anlatırsam daha net bir soru olacak sanırım :)

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

October 27, 2015

Evet C de scope açıp aynı değişken isminde yeni bir değişken açabiliyorsun. Bunu d dilinde yapmaya çalışınca aşağıdaki gibi bir hata verir.

test.d(4): Error: variable x is shadowing variable test.main.x

<http://dlang.org/deprecate.html#Variable shadowing inside functions>

Sadece aynı değişken isminin kullanılmasına izin vermiyor.

void myFun()
{
   int var, x;
   if (var)
   {
       int var; //Yukarıda da var adında bir değişken olduğu için tanımlamaya izin vermeyecektir.

       int var2;
       var2 = 3;
   }
   var2 = 10; // Yukarıdaki if bloğunun içindeki var2 ye erişemeyecektir ve derleme hatası verecek.
}

Zekeriya

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

October 27, 2015

Aslında dün okuldaki C dersinde de bundan bahsediliyordu :)

Zekeriya

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

October 27, 2015

Alıntı (acehreli):

>

Ali

Not: cos00kun, Zekeriya'nın örneği olmasa anlamamıştım. Küçücük bir örnek her zaman yararlı oluyor. ;)

Valla ne yalan söyliim ben de anlamadım :) sağolasın zekeriya sayende örneği tamamlamış oldun.. iş güç derken unutmayayım diye kafa dolu olunca sanırım böyle oluyor.. bundan sonraki soruların mümkünse örnekli olmasına daha çok dikkat edeceğim..

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

October 27, 2015

Burada iki konu var:

  • Değişkenlerin kapsam (scope) dışında geçerli olmamaları: Bu iyi bir olanak ve D ve başka bir çok dilde böyle

  • İç kapsamdaki isimlerin dış kapsamlardaki isimleri silmeleri. Bu bazen istenen bir şey olsa da bazen programcı farketmeden yanlışlıkla olur. D bunu bilerek yasaklar.

Ali

Not: cos00kun, Zekeriya'nın örneği olmasa anlamamıştım. Küçücük bir örnek her zaman yararlı oluyor. ;)

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

October 28, 2015

Harika bir yazı olmuş. Dildeki bu tarz şeyleri öğrenmek ileride karşılaşılabilecek hatalara karşı zaman kazandırabilir.

Scope ların ayrı bir fonksiyonmuş gibi farklı stack a sahip olması çok ilginç.

Go hakkında pek bir bilgim yoktu doğrusu biraz wikiden bakındım Ken Thompson dilin yapımcıları arasındaymış. (Bu arada geçen sene Ankara Üniversitesine konferansa gelmiş ve daha yeni haberim oldu :/ )

Zekeriya

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

October 28, 2015

Alıntı (acehreli:1445967652):

>
  • İç kapsamdaki isimlerin dış kapsamlardaki isimleri silmeleri. Bu bazen istenen bir şey olsa da bazen programcı farketmeden yanlışlıkla olur. D bunu bilerek yasaklar.

Go'daki sorunlardan bahseden bir yazı bu konuya değiniyor. Go bunu yasaklamadığından (yani, shadowing'e izin verdiğinden) sorunlarla karşılaşılabiliyormuş. Şu yazının 3 numaralı bölümü:

https://medium.com/@tucnak/why-go-is-a-poorly-designed-language-1cc04e5daf2#.ntjzun6me

Ali

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