Teknoloji
Swift - Protocols + Class + Struct
8 ay önce yazıldı. | Okuma süresi: 3 dk.

Şimdi protocols mevzusu swift için çok çok önemli bir yapıdır. Bu yapı sayesinde hem kod use oranını arttırır hem de polymorphism gibi mevzulara derinden dalmış olursunuz.

Bu konularla derinden ilgilenirseniz size şöyle bir artı etki yapar: Eğer yurt dışı kalburüstü kurumsal firmalarda devoloper olma isteğiniz varsa işte oralara girmenizi sağlar. Bu tür kod yapılarını bilmeyen "yahu ben her türlü hallederim baba" diyen arkadaşlar maksiumum hr görüşmesi hadi bilemedin ilk code reviewde basic leetcode ve hackerrank sorularında zaten elenir.

Ha olay zor mu? Tabi ilk bakışta zor gelebilir ama zorluklar üstesinden gelinmek içindir. Alın size bu konuda bir yazı okuyun ve uygulayın evet oluyormuş diyeceksiniz.

Polymorphism mevzusu için ise şuradan yardırabilirsiniz. Biraz kafa açın ben de anlatıyorum aşağıda merak etmeyin.


protocol Playable {
func play()
}

class Musician {
var name: String
var instrument: Playable

init(name: String, instrument: Playable) {
self.name = name
self.instrument = instrument
}

func perform() {
print("\(name) is performing:")
instrument.play()
}
}

struct Guitar: Playable {
func play() {
print("Strumming the guitar strings...")
}
}

struct Piano: Playable {
func play() {
print("Playing the piano keys...")
}
}

let guitarist = Musician(name: "Erkan", instrument: Guitar())
let pianist = Musician(name: "Arif", instrument: Piano())

guitarist.perform()
pianist.perform()



Şimdi koda uzaktan baktığınızda öncelikle tepe bir protocols yapısı var. Ve içinde play adında bir fonksiyon içeriyor gördüğünüz gibi protokol içindeki fonskiyonlarda {} parantezleri kullanmıyorsunuz. func kafamdanSalliyorum() gibi...

Sonrasında ise Musician adlı bir class yapısı içinde name ve enstrümanı olan bir yapı bırakmışız. Tabi bunu init edip bir de perfom fonksiyonumuz var. Şimdi burada önemli nolan var instrument'in yapısı Playable yani üstteki protocol. Evet gördüğünüz gibi protokollerin bir özelliği olan tanımlayı görebiliyorsunuz. Böyle tanımalarda direk instrument varına size play fonsiyonu tanımlamış olabildiniz. Alttaki perform() func içinde zaten direk instrument.play() yapabildiniz. Noldu yani?
Fonksiyon içinde fonksiyon oldu. Bu bir.

İkinci mevzu iki tane struct tanılamışız. Bunların biri gitar biri piano, ve mirasını Playable protokolünden vermişiz. İşte ikinci olarak da protokolü class veya structlara böyle bir tanımla ile ekleyebilirsiniz. Bu sayede gitar ve piaonaya otomatik play() fonksiyonu verebildiniz. Bu da ikinci mevzuydu.

Şimdilik bu ikisi yeter.

En son gidip denediğinizde hoşunuza gidecek. Artık

Musician classından ürettiğiniz bir muzisyeni bu yapılar ile perform ettirebiliyorsunuz.

Sevdiniz mi?


Page generated in 0.0198 seconds.