[[anasayfa|]] / [[basit_dili_kuralları|]] ====== Özel Tür 'Esnek' ====== Esnek türü özel bir türdür ve aslında konteyner görevi görür aynı zamanda Türler Arası Çeviri (Type Cast) yapar. Esnek Basit'in diğer tüm veri türlerini destekler. Buna Yapılar, Objeler ve Bileşenlerde dahildir. Esnek türünün en çok işe yarayacağı durumlar prosedür parametre türü ve prosedür sonuç geri verme türü olarak ağırlık gösterir. Normal durumlarda Esnek türü mümkün oldukça az kullanılmalıdır. İlk bakışta üniversal bir tür olduğu için çok cazip gelsede Esnek'in bir takım dezavantajları vardır: * Kapsamakta olduğu veri türüne bağlı olarak bellekte fazla alan işgal edebilir * Yine kapsamakta olduğu veri türüne bağlı olarak en az iki veya daha fazla işlevsel adım gerektirir. Genel olarak Esnek türüyle tutulan verilerin işlemleri, normal veri türleri üzerinden gerçekleştirilen işlemlerle kıyaslandığında farkedilir ölçüde yavaştır * Özellikle matematiksel işlemler yapılacak ise, Esnek ile yapılması önerilmez. Bunun yerine işleme dahil edilecek veriyi sayısal bir türden olan bir değişkene aktarıp, işleme onu dahil etmek önerilir. * Esnek özellikle işaretlerde, yapılarda, objelerde ve bileşenlerde dikkatli kullanılmalıdır. Bu durumlarda sık değil, daha az yazma ve okuma işlemleri yapılmalıdır. Aksi taktirde uygulamanın çökmesine sebebiyet verebilir. Esnek'in avantajları: * Veriler arası tür'den türe çeviri yapabilir. Sayısal bir değeri kaynak alıp, metinsel bir değer olarak geri verebilir. * Aynı prosedür farklı türden verileri tek bir parametre elemanından elde edebilir ve [[VeriDenetim|]] objesiyle birlikte yönetebilir. * Aynı zaman bir prosedür her türlü türden veri geri verebilir. Özellikle prosedürlerin parametreleri için ve geri verme türü olarak, aslında Esnek türünün kendisinden olmasına rağmen, derleyici tarafından Esnek'in sınırlandırılmış variyasyonu olarak sunulan özel "Kısmi Türler'de" vardır: ^ Varyasyon ^ Kullanım ^ Fonksiyonu ^ | DeğişkenTür | Parametre | Sadece sayısal ve virgüllü tür verileri kabul eder | | DizilimselTür | Parametre | Sadece dizilim kabul eder | | Obje | Parametre | Sadece Obje kabul eder | | Bileşen | Parametre | Sadece Bileşen kabul eder | | Yapı | Parametre | Sadece Yapı kabul eder | | Değişkendir | Geri Verme | Sadece sayısal ve virgüllü tür verileri kabul eder | | Dizilimdir | Geri Verme | Sadece dizilim kabul eder | | Objedir | Geri Verme | Sadece Obje kabul eder | | Bileşendir | Geri Verme | Sadece Bileşen kabul eder | | Yapıdır | Geri Verme | Sadece Yapı kabul eder | Bu varyasyonlar sadece prosedür ve metotlar için geçerlidir. Bu kısmi türleri normal bir değişken gibi belirlemek ve kullanmak istiyorsak, geçerli yöntemler şöyle: ? Türü belirtilmemiş bir değişken Esnek'in DeğişkenTür'ü varyasyonunda tutulur ? Değişken rakam1; rakam2 ? Türü belirtilmemiş bir dizilim, Esnek'in DizilimselTür'ü varyasyonunda tutulur ? Dizilim liste1; liste2 ? Ne olduğu netleştirilmemiş bir Yapı, Obje veya Bileşende yine Esnek varyasyonudur ? Belirle Yapı birŞey Belirle Obje birŞey Belirle Bileşen birŞey Ama yukarıda ifade ettiğim gibi, Esnek ve varyasyonlarını dikkatli kullanmalı. Eğer normal türlerle yapılabilecek işlemse, o halde Esnek veya varyasyonunu kullanılmamalı. Prosedür ve Metotlar mesela yükleme yapabiliyor. Yükleme özelliği sayesinde aynı isime sahip birden fazla prosedür veya metot belirlemek mümkün. Bunların parametre türleri vesaire farklı olabilir, fakat en azından net bir türden olabilir. Esnek ve varyasyonları sadece gerçekten gerektiği yerde kullanılmalıdır ve mümkün oldukça az adette. Esnek ile büyük bir uygulama hazırlamak hiç önerilmez. Uygulama hatasız çalışacak olsa bile, yavaş ve oldukça ağır çalışır ve gereğinden fazla bellekte alan işgal eder.