Arama

Şablon kodları hakkında bilgi verir misiniz?

Güncelleme: 16 Şubat 2016 Gösterim: 3.429 Cevap: 2
Ziyaretçi - avatarı
Ziyaretçi
Ziyaretçi
16 Kasım 2008       Mesaj #1
Ziyaretçi - avatarı
Ziyaretçi
benim bir radyom radyo acilinca sag tarafa yazi veya resim eklemek istiyom nasil yapa bilirim hangi kodlar kullanacam yazilar saginda cikmasi icin tesekkür ederim
Sponsorlu Bağlantılar
Keten Prenses - avatarı
Keten Prenses
Kayıtlı Üye
16 Kasım 2008       Mesaj #2
Keten Prenses - avatarı
Kayıtlı Üye
sanırım blog şablonundan bahsediyorsunuz tam olarak isteğinizi ve kullandığınız blog sistemini yazarmısınız? örneğin blogspot,blogcu yada wordpress gibi..
Sponsorlu Bağlantılar
Quo vadis?
Avatarı yok
OneNight
Yasaklı
16 Şubat 2016       Mesaj #3
Avatarı yok
Yasaklı
Şablon [template] da dallı budaklı bir konu olduğu için ben ayrıntılarını daha sonra D.ershane'de anlatmayı düşünüyorum.

Burada en yaygın ve kolay kullanımını göstereceğim. D'nin şablonlarının C++'nınkilerden 16.7 kat :p daha güçlü ve kullanışlı olduklarını aklımızda tutarak... Msn Happy

C ve türevi diller tür konusunda sağlamcıdırlar. Türler arasından otomatik dönüşümler de olur ama int'ler için yazılmış bir ikili arama algoritması double'lar için çalışmaz. Ya her tür için ayrı bir fonksiyon yazmak gerekir, ya da qsort'un kulladığı void* gibi tür güvenliğini çöpe atan ara durumlara düşmek gerekir.

Şablonlar, algoritmanın bir kere yazılmasını ve uyan türlerin hepsi için çalışmasını sağlarlar.

Basit olsun diye büyüğünün_karesi diye bir fonksiyon kullanacağım (burada ?: işlecinin anlamı da anlaşılıyordur herhalde):

int büyüğünün_karesi(int birinci, int ikinci)
{
int büyük = (birinci > ikinci) ? birinci : ikinci;
return büyük * büyük;
}

double büyüğünün_karesi(double birinci, double ikinci)
{
double büyük = (birinci > ikinci) ? birinci : ikinci;
return büyük * büyük;
}

Sonuçta her tür için ayrı bir fonksiyon yazmış olduk... Ama dikkat edilirse, fonksiyonun içeriği her tür için aynıdır. Şablon olanağı, derleyiciye "türün ismini şimdi söylemiyorum, sonra programdaki kullanışına bakarak sen anla; ve sanki ben her tür için ayrı ayrı yazmışım gibi derle" demek gibidir.

Şimdi int ve double demeden bu işi halledeceğiz. Geleneksel olarak, ismini söylemeden bıraktığımız türe T denir:

T büyüğünün_karesi(T)(T birinci, T ikinci)
{
T büyük = (birinci > ikinci) ? birinci : ikinci;
return büyük * büyük;
}

Tek bir fonksiyon yazmak yeter! Msn Happy Orada iki fark var:

1) int veya double yerine T dedik
2) Fonksiyonun ismini büyüğünün_karesi yerine büyüğünün_karesi(T) diye yazdık; bu, "T, kullanımına göre anlaşılacak olan bir türdür" demektir

Şimdi o tek fonksiyonu kullanarak hem int hem double için çağırabiliriz, ve derleyici o fonksiyondan kendisi iki adet üretir:

void main()
{
büyüğünün_karesi(3, 4);
büyüğünün_karesi(1.1, 2.2);
}

O kodda türlerin int ve double olduklarını derleyici anlar. Bazı durumlarda gerektiğinde türün ne olduğu elle yazılmak zorunda kalınabilir:

büyüğünün_karesi!(int)(3, 4);

Tek parametre alan şablonlarda D'nin bir kestirme olanağı da var:

büyüğünün_karesi!int(3, 4);

Yani şablon, algoritmayı (veya fonksiyonu) tek kere yazdığımız ve derleyicinin gereken türler için kod ürettiği bir düzenektir.

Sınıf şablonları da vardır ama benzerliğini göstermek dışında ayrıntıya girmeyeceğim:

import std.stdio;

class Çift(T) // <-- T buraya koyulur
{
T birinci_;
T ikinci_;

this(T birinci, T ikinci)
{
birinci_ = birinci;
ikinci_ = ikinci;
}

void göster()
{
writeln("elimde iki adet ", T.stringof, " var: ",
birinci_, " ve ", ikinci_);
}
}

void main()
{
auto int_çifti = new Çift!int(1, 2);
int_çifti.göster();

auto double_çifti = new Çift!double(1.1, 2.2);
double_çifti.göster();
}

Tek bir sınıf yazdığımız halde int ve double için ayrı ayrı üretilir. Onun çıktısı şöyle:

elimde iki adet int var: 1 ve 2
elimde iki adet double var: 1.1 ve 2.2

KAYNAK=sŞablon ne işe yarar?

Benzer Konular

18 Mart 2009 / alikocaman75 Soru-Cevap
3 Ekim 2011 / Misafir Soru-Cevap
12 Aralık 2014 / selenagomez Soru-Cevap