Enumeration - 2

Enumeration Sıralama

enum Planet: Int {
    case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
//Planet diye bir enum tanımladık. İlk değer verildikten sonra değer sıralaması kendiliğinden yapılır.

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:
        print("Dünya..")
    default:
        print("Dünya dışı bir yer..")
    }
} else {
    print("Sıralama (positionToFind) da hiç bir gezegen yok.")
}
---> Sıralama 9 da hiç bir gezegen yok

Bir enum bildirimi sıfır ya da daha fazla enum sabiti içerebilir. Swift’te enum türleri protokoleri destekleyebilir. Ancak yapılarda olduğu gibi enum türleri de türetmeye kapalıdır. Yani bir enum’dan türetme yapılamaz bir enum da başka bir türden türetilemez. Enum türleri kategori olarak değer türlerine (value types) ilişkindir. Yani enum türünden bir değişken bir adres değil değerin kendisini tutar.

Swift’teki enum türleri metot da içerebilir. Enum türlerinin başlangıç metotları (init metotları) söz konusu olabilir. Enum metotları içerisinde self anahtar sözcüğü yine enum değişkeninin kendisini temsil eder.

Örneğin:
enum Direction {
case North, East, South, West
init(){
self = .South}
init(d: Direction){
self = d}
func disp(){
print(self)}}
var d: Direction = Direction()
d.disp()

Enum’lar da protokolleri destekleyebilir. Ancak yapılarda olduğu gibi enum’lar da türetmeye kapalıdır.
Enum’lar kategorik olarak değer tür davranış gösterirler. Yani enum türündeki bir değişken bir referans (bellek adresi) değil, değerin kendisini tutar.