Thread overview
Sınıf nesnelerinin hemen sonlandırılmalarını sağlayan 'scope' belirteci emekliye ayrılmış
Apr 06, 2012
Salih Dinçer
Apr 08, 2012
zafer
June 26, 2011

Sınıf nesnelerinin sonlandırıcıları yaşamlarının sona erdiği yerde değil, ilerideki belirsiz bir zamanda çağrılır. Örneğin şu programın çıktısında ~this'in main'den çıkıldıktan sonra çağrıldığını görüyoruz:

import std.stdio;

class Sınıf
{
   ~this()
   {
       writeln("~this çağrıldı");
   }
}

void main()
{
   {
       auto nesne = new Sınıf;

   } // <-- nesne'nin yaşamı sona erdi

   writeln("main'den çıkılıyor");
}

Çıktısı:

'main'den çıkılıyor
~this çağrıldı
'

Sonlandırıcının, yaşamın sona erdiği anda çağrılmasını sağlamak için eskiden (aslında en azından 2.053 ile bile) 'scope' belirteci kullanılıyordu. Yukarıdaki programda tek değişiklik yapalım:

       scope auto nesne = new Sınıf;

Şimdi çıktının sırası değişir:

'~this çağrıldı
main'den çıkılıyor
'

Bu eski bilgiyi daha önce şu sayfada anlatmıştım:

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

O kalıntı sayfanın ismini ve içeriğini değiştirdim:

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

Orada da anlatıldığı gibi; artık 'scope' belirteci değil, std.typecons.scoped kullanılıyor:

import std.typecons;
// ...
       auto nesne = scoped!Sınıf;

Yine şu çıktıyı üretir:

'~this çağrıldı
main'den çıkılıyor
'

Ali

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

April 06, 2012

Şu sıralar scope olayını forumda tartışıyoruz ama tam anlayamadım...:)

Yani yukarıdaki gibi yerel olay (local scope) mu emekliye ayrıldı yoksa Java'daki gibi final scope olayı mı? Bir de sanırım ileriki bir sürümde çalışacak ama rezerve edilmiş bir scope deyimi var. Bu C++'daki gibi :: olayı mı?

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

April 06, 2012

Evet, yerel değişkenleri belirlerken kullanılan scope emekliye ayrıldı. Onun yerine scoped var.

Parametre listesinde kullanılan scope geçerli ama henüz derleyici tarafından desteklenmiyor. Anlamı şu olacak: "Bu parametreyi yalnızca bu işlev içinde kullanacağım; yani elimde ona erişmeyi sağlayacak referans bulundurmayacağım." Bundan şu anlaşılıyor: global değişkene atanamayacak, işlevden döndürülemeyecek, başka bir parametrenin gösterdiği bir değişkene atanamayacak, vs.

Ali

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

April 08, 2012

Neredeyse hiç kullanmadığım için beni çok etkilemedi ama gelişmeleri takip etmek açısından yerinde bir mesaj olmuş.

Benim ne zamandır yazmak istediğim şu @property kelimesi, bu çok yapmacık ve iğreti duruyor bence, keşke bunun yerine direk property kelimesi kullanılsa yada c# gibi metot yapısından bu özellik anlaşılsa daha güzel olur diye düşünüyorum.

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