Kalıp Kodu Azaltmak için Ekli Üye Makroları
Üye makrolarıyla init, CodingKeys veya Equatable uygunluklarını otomatik oluşturun.
Kalıp Kodu Azaltmak için Ekli Üye Makroları, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Üye macro'suna Genel Bakış
Ekli bir üye macro'su, süslenmiş türün üzerine doğrudan yeni üyeler (özellikler, yöntemler ve başlatıcılar) üretir.
@AddID
struct User { var name: String }
// After expansion:
// struct User { var name: String; var id = UUID() }MemberMacro'a Uyum Sağlama
MemberMacro protokolünü uygulayın ve yeni üyeleri temsil eden bir DeclSyntax dizisi döndürün.
import SwiftSyntaxMacros
struct AddIDMacro: MemberMacro {
static func expansion(
of node: AttributeSyntax,
providingMembersOf decl: some DeclGroupSyntax,
in context: some MacroExpansionContext
) throws -> [DeclSyntax] {
return ["var id = UUID()"]
}
}Başlatıcı Oluşturma
Üye macro'ları, gerektiğinde üye tabanlı başlatıcının yerine özel bir başlatıcı üretebilir.
// Macro expansion returns:
[
"init(name: String) { self.name = name; self.id = UUID() }"
]@Observable macro'sunun İç Yapısı
Swift'in yerleşik @Observable özelliği, sınıfınıza gözlem altyapısı eklemek için üye macro'larını kullanır.
@Observable
class Counter {
var count = 0
// macro adds: _$observationRegistrar, access(), withMutation()
}Süslenmiş Türü Okuma
Bağlama duyarlı üyeler üretmek için süslenmiş türün özelliklerine decl parametresi üzerinden erişin.
if let structDecl = decl.as(StructDeclSyntax.self) {
let members = structDecl.memberBlock.members
// iterate to inspect stored properties
}Saklanan Özellikleri Çıkarma
Kod üretimini yönlendirmek için üye listesini, saklanan özellik kalıplarına sahip değişken bildirimlerine göre filtreleyin.
let storedProps = members.compactMap { member -> VariableDeclSyntax? in
guard let varDecl = member.decl.as(VariableDeclSyntax.self),
varDecl.bindingSpecifier.tokenKind == .keyword(.var)
else { return nil }
return varDecl
}Üyelerden Equatable Üretme
Bir @AutoEquatable macro'su, saklanan her özelliği karşılaştırarak == üretebilir.
// Generated code:
static func == (lhs: User, rhs: User) -> Bool {
lhs.name == rhs.name && lhs.id == rhs.id
}Üye ve Uyumluluk macro'larını Birleştirme
Hem üyeler eklemek hem de protokol uyumluluğunu bildirmek için genellikle MemberMacro ile ConformanceMacro'u birlikte kullanırsınız.
struct AutoEquatableMacro: MemberMacro, ConformanceMacro { ... }Öznitelik Argümanları
macro'nuz, ürettiği kodu özelleştiren argümanları kabul edebilir.
@Clamped(range: 0...100)
var score: Int = 50
// macro reads range from attribute node and generates clamping accessorsmacro Hatalarını Raporlama
macro yanlış kullanıldığında MacroExpansionError fırlatın veya tanılama iletileri yayınlayın.
guard decl.is(StructDeclSyntax.self) else {
throw MacroError.message("@AddID can only be applied to structs")
}Derleme Performansı
Genişletme derleme zamanında gerçekleştiği için üye macro'ları çalışma zamanına hiçbir ek yük getirmez ve üretilen kod önbelleğe alınabilir.
// All generated members are emitted as source code
// and compiled normally — no reflection at runtimeKısa Kontrol
Ekli bir üye macro'su hangi protokole uyum sağlamalıdır?
Ders Özeti
Üye macro'ları (MemberMacro), süsledikleri tür için saklanan özellikler, hesaplanan özellikler ve başlatıcılar üretir. Bağlama duyarlı kod üretmek için türün mevcut üyelerini okuyun. Protokol uyumlulukları da eklemek için ConformanceMacro ile birleştirin.
Sıkça Sorulan Sorular
“Kalıp Kodu Azaltmak için Ekli Üye Makroları” dersi ücretsiz mi?
Evet — “Kalıp Kodu Azaltmak için Ekli Üye Makroları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Kalıp Kodu Azaltmak için Ekli Üye Makroları” dersinde ne öğreneceğim?
Üye makrolarıyla init, CodingKeys veya Equatable uygunluklarını otomatik oluşturun. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Kalıp Kodu Azaltmak için Ekli Üye Makroları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Makro Rolleri: Bağımsız ve Ekli
- Bağımsız İfade Makrosu Yazma
- Kalıp Kodu Azaltmak için Ekli Üye Makroları
- Makroları Sınama ve Hatalarını Ayıklama