Swift dilinde dizi içerisine farklı tipte değişkenler koymak

Tipler Swift dilinde önemli bir yere sahip. Ama bazen kuralları çiğnemek istersek?



2 dakikalık okuma
September 14, 2017

Ş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: