0Pricing
Swift Academy · Pelajaran

Peran Macro: Freestanding vs Attached

Memahami macro #expression serta peran macro @attached peer/member/accessor.

Peran Macro: Freestanding vs Attached adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Apa Itu Makro Swift?

Makro Swift memperluas kode sumber saat kompilasi, menghasilkan kode rutin secara otomatis tanpa beban tambahan saat eksekusi.

// Macros are invoked with # (freestanding) or @ (attached)
#warning("Fix this later")
@Observable class Counter { var count = 0 }

Makro Ekspresi Mandiri

Makro ekspresi mandiri diawali dengan # dan menghasilkan nilai atau melakukan efek samping.

// #stringify expands to a tuple of the value and its source string
let (val, src) = #stringify(1 + 2)
print(val, src) // 3, "1 + 2"

Makro Deklarasi Mandiri

Makro deklarasi mandiri menghasilkan deklarasi baru, misalnya fungsi dan variabel, di lokasi penggunaannya.

// #makePair emits two variables
#makePair("point", x: 1, y: 2)
// expands to: let pointX = 1; let pointY = 2

Makro Member Terlampir

Makro @member terlampir menambahkan properti tersimpan atau terhitung, inisialisasi, atau metode baru ke tipe tempat makro tersebut terlampir.

@AddID
struct User { var name: String }
// Expands to: var id = UUID()

Makro Accessor Terlampir

Makro @accessor terlampir menghasilkan implementasi pengambil dan penyetel untuk properti tersimpan.

struct Point {
  @Clamped(0...100)
  var x: Int = 0
  // accessor macro generates get/set with clamping
}

Makro Peer Terlampir

Makro peer menambahkan deklarasi saudara di samping deklarasi tempat makro tersebut terlampir.

class Service {
  @AddAsync
  func fetchSync(completion: @escaping (Data)->Void) { ... }
  // peer macro adds: func fetch() async -> Data
}

Makro Conformance Terlampir

Makro conformance menambahkan kepatuhan protokol beserta implementasi yang diperlukan ke suatu tipe.

@EquatableByID
struct Product { var id: Int; var name: String }
// adds: extension Product: Equatable { ... }

Makro Extension Terlampir

Makro extension menghasilkan seluruh blok extension untuk suatu tipe, yang berguna untuk menambahkan implementasi protokol yang kompleks.

@CustomCodable
struct Config { var host: String; var port: Int }
// adds: extension Config: Codable { custom encode/decode }

Ekspansi Makro Terjadi saat Kompilasi

Semua ekspansi makro berlangsung saat kompilasi—tidak ada biaya saat eksekusi, dan kode yang diperluas dapat dilihat di Xcode.

// Right-click macro usage in Xcode → "Expand Macro"
// to see the generated source code

Mendeklarasikan Makro

Makro dideklarasikan dalam target makro terpisah menggunakan atribut @freestanding atau @attached.

@freestanding(expression)
public macro stringify<T>(_ value: T) -> (T, String)
  = #externalMacro(module: "MyMacros", type: "StringifyMacro")

Ringkasan Peran Makro

Mandiri: #expression, #declaration. Terlampir: @member, @accessor, @peer, @conformance, @extension.

// Freestanding
let result = #stringify(40 + 2)
// Attached
@Observable class Model { var count = 0 }

Pemeriksaan Singkat

Peran makro manakah yang menambahkan member baru, seperti properti atau inisialisasi, ke tipe yang diberinya anotasi?

Ringkasan Pelajaran

Makro mandiri (#name) menghasilkan nilai atau deklarasi. Makro terlampir (@name) memperkaya tipe dengan member, accessor, peer, conformance, atau extension. Semua ekspansi berlangsung saat kompilasi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Peran Macro: Freestanding vs Attached” gratis?

Ya — teks lengkap “Peran Macro: Freestanding vs Attached” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Peran Macro: Freestanding vs Attached”?

Memahami macro #expression serta peran macro @attached peer/member/accessor. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Peran Macro: Freestanding vs Attached” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Peran Macro: Freestanding vs Attached
  2. Menulis Macro Ekspresi Freestanding
  3. Macro Member Attached untuk Mengurangi Boilerplate
  4. Menguji dan Men-debug Macro
← Kembali ke Swift Academy