Bir süredir şablonlara karşı müthiş bir ilgi duyuyorum. Daha öncesinde hiç kullanmadım. İlk C++ ile tanıdım ama hepsi o kadar daha sonra C#'ın generic programlama (http://www.asp.net.tr/Makale/897-C--Generic--programlama-Giris-I.aspx) yaklaşımı ile biraz daha yakından ilgilenme fırsatım oldu. Şimdilerde ise D dilinin sağladığı olanak olarak ilgimi çekiyor. Özellikle şablonlar hakkında şuradaki yazıdan (http://www.bilisim-kulubu.com/sozluk/sozluk.php?e=generics) sonra daha yakından incelemeye ve öğrenmeye karar vardim.
Bu sebeple şablon olarak hazırlanmış bir yığın sınıfı yazmaya çalışıyorum. Gerçi tam kodlamayı yaptım dersaneye bir göz atayım dedim. Ali'nin yazdığı ve aynı mantıkta olan yiğin sınıfını gördüm. Eklesem mi diye düşünürken belki üzerinde farklı konularda bilgi paylaşımı olur düşüncesi ile kodu ekliyorum.
import std.stdio;
import std.exception;
class Yigin(T)
{
private int konum;
private T[] yigin;
public this(int kapasite)
{
enforce(kapasite >=0, "Yigin buyuklugu negatif olamaz!");
yigin.length = kapasite;
konum = -1;
}
public void Push(T)(T deger)
{
if (konum == yigin.length)
{
throw new Exception("Yigin dolu");
}
konum++;
yigin[konum] = deger;
}
public T Pop()
{
if (konum == -1)
{
throw new Exception("Yigin bos");
}
return yigin[konum--];
}
}
void main()
{
Yigin!(string) stack = new Yigin!(string)(10);
stack.Push("ben");
stack.Push("bir");
stack.Push("D");
stack.Push("Dili");
stack.Push("yigin");
stack.Push("sinifiyim");
for (int i = 0; i < 6; ++i)
{
writeln("Deger : ", stack.Pop());
}
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]