İOS Swift

Swift Enumeration

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.

1D Barkod

QR formatlı 2D barkodlar iseISO 8859-1 formatında karakter kullanırlar ve 2953’e kadar string karakter saklayabilirler.

QR Kod5

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

2 Yorum

Swift Programlama Dili için bir yanıt yazın X