Alıntı (Kadir Can):
> Kapama kavramıyla ilgili aklıma bir şey takıldı. Sözlüğümüzden kontrol ettim, işlemleri ve işledikleri kapsamı bir arada saklayan program yapısı olarak tanımlanmış. Yani yanlış anlamadıysam temsilciler kapamalara örnek oluyor
Fonksiyonel dil geçmişim olmadığı için bu kavramları anlamam zaman almıştı. Yukarıdaki tanım aslında "temsilci"nin tanımı. Kapama olması için sanırım ek olarak bir işlevden dışarıya dönüş değeri olarak döndürülmesi gerekiyor:
import std.stdio;
auto kapamaDöndür(int i)
{
int j = i * 2;
alias int delegate(int) KapamanınTürü;
KapamanınTürü kapama = x => x + j; // yerel kapsamı kullanıyor
return kapama;
}
void main()
{
auto kapama = kapamaDöndür(42);
writeln(kapama(1));
}
En azından TDPL'de verilen örneği öyle anlıyorum. Ayrıca 'alias'a neden gerek olduğundan hiç emin değilim.
Alıntı:
> ; peki {} olarak tanımladığımız kapsamlar kapamaya örnek oluyor mu?
Yalnızca {} salt kapsam belirliyor. Temsilci bile olabilmesi için öncelikle lambda olmalı tabii.
Alıntı:
> Ayrıca burada hataya sebep olan şey doğru anladıysam lambda fonksiyon, değil mi?
Hatanın söylediğine bakılırsa lambda yerelmiş, ama yerel lambdalar taskPool.map gibi global olmayan şablonlara gönderilemiyorlarmış. (?)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]