Kod Swift

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 .



Yazar hakkında

Kadir Kutluhan Alev

Kadir Kutluhan Alev

Swift ile iOS App geliştirme üzerine çalışıyorum.Bu araştırmaları yaparken öğrendiğim bilgileri mutfakta sizler ile paylaşıyorum.Sizde araştırmalarınızı bizimle paylaşın . Yorum yaparak mutfağın gelişmesine katkıda bulunun.

Yorumlar

Bir yorum yaz

This site uses Akismet to reduce spam. Learn how your comment data is processed.