
Swift Enumeration Nedir ? Ne işe Yarar ?
Merhaba arkadaşlar sayın kod seveler . Özellikle swift severler bugün ki yazım da Swift ‘ de veya diğer dillerde de oldukça yararlı olan enumeration’ lardan bahsetmek istiyorum. Hemen tanımını yaparak başlayalım .
Enumeration , birbiriyle ilişkili değerleri bir arada tutan ve kodun içinde güvenli bir şekilde bunlarla çalışmamıza imkan sağlayan yaygın bir yapıdır.
Syntax’ına bir göz atalım .
enum SomeEnumeration { }
Şimdi örnek olması açısından yönleri bir enum içinde gösterelim.
enum Yonler { case kuzey case guney case doğu case bati }
Her enum tanımı yeni bir tip tanımlar.
var yon = Yonler.kuzey // Eğer print(yon) yazar ve çalıştırırsak ekrana çıktı olarak kuzey yazar.
yon değişkenini initialize ettikten sonra artık ait olduğu tipi anladı yani enum’un tipi. Bundan sonra uzun uzun yazmadan nokta notasyonu ile değerlere erişebiliriz.
yon = .guney
Enum’ ların switch ile kullanımına sıklıkla denk geliriz. Birde bunu inceleyelim.
switch yon { case .kuzey : print("Güncel yön Kuzey") case .guney : print("Güncel yön Güney") case .doğu : print("Güncel yön Doğu") case .bati : print("Güncel yön Batı") }
Eğer enum da kaç değer olduğunu bilmeye ihtiyacımız varsa Swift’in bunun için uymamız gereken bir protokolü var.
enum Icecekler : CaseIterable { case coffee,tea,juice } let secenekSayisi = Icecekler.allCases.count print("\(secenekSayisi) içecek çeşidi bulunuyor. ")
Bazı durumlarda kullabılabilir 🙂
Şimdi gelelim enumeration’ ların güzel bir özelliği olan rawValue’ lere
Dikkat : rawValue kullanabilmek için enum' un bir protokole uyması gereklidir.
enum HavaalaniVeKodlari : String { case ANK = "Ankara" case ISE = "Isparta" case KCO = "Kocaeli" case SSX = "Samsun" case TEQ = "Tekirdağ" } print(HavaalaniVeKodlari.TEQ.rawValue) // çıktısı : Tekirdağ print(HavaalaniVeKodlari.ANK.rawValue) // çıktısı : Ankara
Diyelim ki case’lerin her birine değer atamak istiyorsunuz ve 100 tane case’e sahip olduğunuzu düşünelim tek tek uğraşacak mısınız ? Tabiki hayır Swift’in kestirme yollarından biri geliyor.
enum Gezegenler : Int { case dünya = 1 case mars case pluton case merkür case venus case jupiter case satürn } // Diyelim ki Dünya'ya 1 numarayı verdik . Bundan sonraki bütün değerler sırasıyla artan değerleri alırlar. print(Gezegenler.dünya.rawValue) // Çıktısı : 1 print(Gezegenler.pluton.rawValue) // Çıktısı : 3 print(Gezegenler.jupiter.rawValue) // Çıktısı : 6
// son olarak da artık elemanlarımıza rawValue ile de erişebiliriz. let secilenGezegen = Gezegenler(rawValue: 4) // secilenGezegen e dönen isim Merkür'dür.. print(secilenGezegen) // Optional(__lldb_expr_47.Gezegenler.merkür)
Evet arkadaşlar bugün ki konumuzu bitirdik daha detaylı incelemek isteyenler buradan Apple dökümantasyonuna ulaşabilir.
Plana göre yarın akşam ki yeni yazım da görüşmek üzere keyifli kodlamalar .