Enumaration, birbiri ile bağlantılı değerler için ortak bir tip oluşturur ve bu tipi kullanmanızı sağlar. C dilinde enumların int değerlerine atandığını biliyoruz ancak Swift programlama dilinde, enumlar daha esnek bir şekilde karşımıza çıkıyor.
Enumaration Syntax’ı
enum EnumerationName { // enumeration tanımı burada yapılır }
Örnek Kullanım
enum Direction { case North case South case East case West }
enum tanımlarken tek satırda virgülleri kullanarak ta tanımlama yapabiliyoruz.
enum Planet { case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune }
Enumları Değişkelere Atama
enumları değişkenlere atarken enumadı.değeri şeklinde kullanmamız yeterli.
var myWay = Direction.West //myWay değişkenini bir kez Direction enum'u ile tanımlanınca, daha sonra kısa syntax kullanabiliriz directionToHead = .East
Switch Case İle Enum İçerisindeki Değerlere Ulaşma
Switch case kullanarak enum içerisindeki değerlere ulaşabiliriz. Bunu yapmak için enum içerisindeki her bir case’i, switch case’in her bir case’i olarak düşünebiliriz.
myWay = .South switch myWay { case .North: println("Kuzey yönündeyim !") case .South: println("GÜney yönündeyim !") case .East: println("Doğu yönündeyim !") case .West: println("Batı yönündeyim !") } // Konsola "Güney yönündeyim !" yazacaktır
let somePlanet = Planet.Earth switch somePlanet { case .Earth: println("Dünya gezegenindesin !") default: println("Ay uydusundasın !") } // Konsola "Dünya gezegenindesin !” yazdıracaktır. //Gördüğünüz gibi, switch case'de olan default değerini de kullanabiliyoruz.
İlişkili(Associated) Değerler
Swift programlama dili, enum değerlerini özel tiplerde veriler tutmak için de kullanmamıza izin veriyor.
Örnek olarak 1D barkod formatını ele alabiliriz. Her bir barkod numara sistemi basamağı ile başlar, bunu 5 basamaklı üretici kodu takip eder, bunu da 5 basamaklı ürün kodu takip eder ve en sonunda da kontrol basamağı bulunur.
QR formatlı 2D barkodlar iseISO 8859-1 formatında karakter kullanırlar ve 2953’e kadar string karakter saklayabilirler.
Şimdi ise yukarıda gösterdiğimiz barkodlar için enum tanımlayalım…
enum Barcode { case UPCA(Int, Int, Int, Int) case QRCode(String) }
Ve değişkene atayalım..
var barcodeValue = Barcode.UPCA(8, 85909, 51226, 3) //1D barkod için değer atadık. barcodeValue = .QRCode("kod5.net") //Şimdide aynı değişkene QR formatında 2D barkod değeri atadık //Barcode.QRCode şeklinde uzun halde yazmadım. Çünkü üstte 1 kere kullandım, gerek kalmadı.
Farkettiğiniz gibi değişkendeki barkod değeri hem int, hem de string oldu. Yani enum’larda hem string hemde int değerleri aynı anda tutabildik.
Burada önemli olan bir nokta var ! int yada String değerlerinden aynı anda sadece 1 tanesi tutulabilir.
Sıralama
Sıralama mantığını aşağıdaki örnek üzerinden kolayca anlayabilirsiniz.
enum Planet: Int { case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune } //Planet diye bir enum tanımladık. let earthsOrder = Planet.Earth.toRaw() // Earth isimli elemanın sırası 3'e eşit. let possiblePlanet = Planet.fromRaw(7) // 7. sıradaki eleman Planet.Uranus'e eşit. let positionToFind = 9 if let somePlanet = Planet.fromRaw(positionToFind) { switch somePlanet { case .Earth: println("Dünya..") default: println("Dünya dışı bir yer..") } } else { println("Sıralama (positionToFind) da hiç bir gezegen yok.") } //Konsola "Sıralama 9 da hiç bir gezegen yok"
[…] Enumeration […]
Teşekkürler. Çok açıklayıcı ve anlaşılır. Swift ile hazırlayacağımız uygulamalar sadece ios8’de mi çalışır ? Ya da şöyle sorayım: ios’un hangi sürümünden itibaren destekler ?
Merhaba Burhan,
Mobil’de iOS 7 ve üzerini destekler.