Forum: Duyurular RSS
dmd 2.038 çıktı
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: dmd 2.038 çıktı
  http://www.digitalmars.com/d/2.0/changelog.html#new2_038

Benim ilginç bulduğum iki tanesi:

- Kurucu işlevi tanımlanmış olan yapı nesneleri artık { } yazımıyla kurulamıyorlar. Dersleri düzeltmek gerek... ;)


- auto ref işlevler:

  http://www.digitalmars.com/d/2.0/function.html#auto-ref-fu…

Eğer döndürdüğü değer bir sol değer (lvalue) ise, onu referans olarak döndürüyor; değilse değer olarak. Normalde kopyalayarak döndüreceğine, referans olarak:

auto ref foo(ref int x) 
{ 
    return x; // referans olarak, x'in kopyası olarak değil
}

Aslında kurallar bayağı karışık; ben henüz yararını anlamadım...

Bu arada o başlığın öncesinde ve sonrasında başka işlev türleri de var: ref, auto, inout...

inout ilginç: O sayfada gösterilen üç işlev yerine tek bir işlev yazabiliyoruz. Dönüşün türünü, döndürülen parametreden otomatik olarak anlıyor:

           int[] foo(           int[] a, int x, int y) { return a[x .. y]; }
    const(int)[] foo(    const(int)[] a, int x, int y) { return a[x .. y]; }
immutable(int)[] foo(immutable(int)[] a, int x, int y) { return a[x .. y]; }

Yukarıdaki üç işlev için derlenen kodlar tamamem aynı. Tek fark, erişim hakları. Artık tek bir işlev yazılabiliyor:

inout(int)[] foo(inout(int)[] a, int x, int y) { return a[x .. y]; }

Orada inout, "döndürdüğüm parametrenin erişim hakkı ne ise" anlamına geliyor, ve döndürülen değere göre otomatik olarak const, immutable, veya değişken olabiliyor.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Duyurular RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 17:26:31 (UTC -08:00)