Şimdi meseleyi kıyaslama yaparak anlatacağım. Kurban olarak seçtiğim dil; PHP :-)
PHP gibi dinamik tipli bir dilden katı kurallı tip mekanizması olan bir dile geçmek kolay alışılacak bir durum değil.
Şöyle daha iyi ifade edeyim: PHP dilinde bir diziye şöyle farklı tipte bir sürü değer atayabiliyorum:
$dizi = ['Book',12,4.5,"Pen"]
$sonuc = ($dizi[1] * $dizi[2]); //1.index olana 12 ve 2. index olan 4.5'i çarp.
//sonuç: 54
PHP çalışma zamanında bunların tiplerini tespit ediyor ve ona göre davranıyor; Bu yüzden geliştiricinin ek bir şey yapmasına gerek kalmıyor.
Aslında PHP 7 ile birlikte dilde tip tanımlama işi de yavaştan girmeye başladı. Geriye uyumluluktan dolayı eski kullanımı destekliyor.
Swift dilinde işler daha farklı yürüyor. Mesela bir dizi tanımlayalım:
var dizi = [String]() //Görüldüğü üzere dizi içerisindeki elemanların tipini önceden belirtiyorum.
dizi = ["Book","Pen"] //Tüm elemanlar string tipte olmalı.
dizi = ["Book","Pen",2] // çalışmaz. Hata verir. Çünkü integer tipinde bir değer var.
Bu durumu Swift dilinde aşmak için Any tipini koymuşlar. Bunu kullanarak PHP’deki gibi bir kullanım yapabiliyorum. Şöyle:
var dizi = [Any]() // Tipini Any olarak ayarladım.
dizi = ["Book",12,4.5,"Pen"]
print(dizi) // Çıktı şöyle: ["Book", 12, 4.5, "Pen"]
var dizi2 = [Int:Any]() //Dictionary tarzı array, key integer değerinde value 'da Any tipinde.
dizi2 = [1:"Book",2:12,3:4.5,4:"Pen"]
print(dizi2[1]!) // Book yazacak.
print(dizi2[3]!) // 4.5 yazacak.
Etiketler: