Swift Enums 2

Associated Value’lar Üzerinden Karşılaştırma

Merhaba daha önceki enum yazısının devamı niteliğinde yazımda kaldığım yerden devam edeceğim ve “case” lerin içinde bulunan associated Value’lar ile nasıl kıyaslama yapılır bunu inceleyeceğim.

Öncelikle “Direction” adında bir enum tanımlıyorum.

Ardından Direction enum’ını kendi içinde barındıran “Player” adında bir başka enum tanımlıyorum. Burada associated value’lar devreye giriyor ve “takım”, “yaş”, “kullanılan (el, ayak)” şeklinde yerlerini alıyorlar.

Şimdi de sıra karşılaştırma işleminin olacağı fonksiyonu yazmaya geldi. Ben oyuncuların kullandıkları ayak veya el üzerinden (sağ, sol) kıyaslama yapacağım. Bunun için öncelikle “Player” enum’ına ait bir extension yazarak içerisine “Direction” alıp “Bool” dönen “checkForDirection” adında bir fonksiyon yazıyorum. Bu fonksiyon içerisinde yer alan “switch-case”, kendisi üzerindeki “case” lerde dolanarak bize bir boolean değer döndürecek. Biz “Direction” üzerinde karşılaştırma yaptığımız için “takım” ve “yaş” için herhangi bir değer belirtmemiz gerekmiyor, “foot/hand” kısmına ise fonksiyon ile bize iletilen “Direction” ı kıyaslıyoruz.

Ardından bir oyuncu yaratarak fonksiyonumuzu çağıralım. Bir futbolcu yarattık ve sol ayaklı olarak nitelendirdik. Ardından “checkForDirection” metodu ile bu futbolcunun sağ ayaklı olup olmadığını sorguladık. Bizim futbolcumuz sol ayaklı olduğu için “false” değer döndürüldü.

Dilersek bir “Player” dizisi yaparak bu dizideki tüm oyuncular için aşağıdaki şekilde kontrol yapabiliriz.

Ayrıca sağlak veya solak oyuncuların takımlarını da aşağıdaki gibi yazdırabiliriz.

“Where” Keywordu Kullanımı

Şimdi de “where” keyword’u kullanarak belirli sonuçlar elde edelim. Bu kez sağlak veya solak olmayı değil oyuncunun yaşını kullanarak bir örnek yapacağız. Burada oyuncunun yaşını kullanmamız gerektiği için “let” keywordunu kullanarak bir “bind” işlemi gerçekleştirdik.

 

Bir cevap yazın