0Pricing
Swift Academy · Ders

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 accessors

macro 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 runtime

Kı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

  1. Makro Rolleri: Bağımsız ve Ekli
  2. Bağımsız İfade Makrosu Yazma
  3. Kalıp Kodu Azaltmak için Ekli Üye Makroları
  4. Makroları Sınama ve Hatalarını Ayıklama
← Swift Academy Sayfasına Dön