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 = 2Makro 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 codeMendeklarasikan 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
- Peran Macro: Freestanding vs Attached
- Menulis Macro Ekspresi Freestanding
- Macro Member Attached untuk Mengurangi Boilerplate
- Menguji dan Men-debug Macro