Makrojen roolit: itsenäiset ja liitetyt
#expression-makrojen sekä @attached peer-, member- ja accessor-makrojen roolien ymmärtäminen.
Makrojen roolit: itsenäiset ja liitetyt on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä Swift-makrot ovat
Swift-makrot laajentavat lähdekoodia käännösvaiheessa ja tuottavat toistuvan koodin automaattisesti ilman ajonaikaista lisäkustannusta.
// Macros are invoked with # (freestanding) or @ (attached)
#warning("Fix this later")
@Observable class Counter { var count = 0 }Itsenäiset lausekemakrot
Itsenäiset lausekemakrot alkavat merkillä # ja tuottavat arvon tai aiheuttavat sivuvaikutuksen.
// #stringify expands to a tuple of the value and its source string
let (val, src) = #stringify(1 + 2)
print(val, src) // 3, "1 + 2"Itsenäiset määrittelymakrot
Itsenäiset määrittelymakrot tuottavat uusia määrittelyjä, kuten funktioita ja muuttujia, käyttökohtaansa.
// #makePair emits two variables
#makePair("point", x: 1, y: 2)
// expands to: let pointX = 1; let pointY = 2Liitetyt jäsenmakrot
Liitetyt @member-makrot lisäävät niitä ympäröivään tyyppiin uusia tallennettuja tai laskettuja ominaisuuksia, alustajan tai metodeja.
@AddID
struct User { var name: String }
// Expands to: var id = UUID()Liitetyt aksessorimakrot
Liitetyt @accessor-makrot tuottavat tallennettujen ominaisuuksien getter- ja setter-toteutukset.
struct Point {
@Clamped(0...100)
var x: Int = 0
// accessor macro generates get/set with clamping
}Liitetyt vertaismakrot
Vertaismakrot lisäävät sisarmäärittelyjä sen määrittelyn viereen, johon ne on liitetty.
class Service {
@AddAsync
func fetchSync(completion: @escaping (Data)->Void) { ... }
// peer macro adds: func fetch() async -> Data
}Liitetyt mukaisuusmakrot
Mukaisuusmakrot lisäävät tyyppiin protokollamukaisuuksia ja niiden edellyttämät toteutukset.
@EquatableByID
struct Product { var id: Int; var name: String }
// adds: extension Product: Equatable { ... }Liitetyt laajennusmakrot
Laajennusmakrot tuottavat tyypille kokonaisia extension-lohkoja, mikä on hyödyllistä monimutkaisten protokollatoteutusten lisäämisessä.
@CustomCodable
struct Config { var host: String; var port: Int }
// adds: extension Config: Codable { custom encode/decode }Makrot laajentuvat käännösvaiheessa
Kaikki makrojen laajennukset tapahtuvat käännöksen aikana — ajonaikaisia kustannuksia ei synny, ja laajennettu koodi on nähtävissä Xcodessa.
// Right-click macro usage in Xcode → "Expand Macro"
// to see the generated source codeMakron määrittäminen
Makrot määritetään erillisessä makrokohteessa käyttäen @freestanding- tai @attached-attribuuttia.
@freestanding(expression)
public macro stringify<T>(_ value: T) -> (T, String)
= #externalMacro(module: "MyMacros", type: "StringifyMacro")Makrojen roolien yhteenveto
Itsenäiset: #expression, #declaration. Liitetyt: @member, @accessor, @peer, @conformance, @extension.
// Freestanding
let result = #stringify(40 + 2)
// Attached
@Observable class Model { var count = 0 }Pikakertaus
Mikä makrorooli lisää koristamaansa tyyppiin uusia jäseniä, kuten ominaisuuksia tai alustajan?
Oppitunnin yhteenveto
Itsenäiset makrot (#name) tuottavat arvoja tai määrittelyjä. Liitetyt makrot (@name) täydentävät tyyppejä jäsenillä, aksessoreilla, vertaismäärittelyillä, protokollamukaisuuksilla tai laajennuksilla. Kaikki laajennukset tapahtuvat käännösvaiheessa.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”Makrojen roolit: itsenäiset ja liitetyt” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Makrojen roolit: itsenäiset ja liitetyt”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Makrojen roolit: itsenäiset ja liitetyt”?
#expression-makrojen sekä @attached peer-, member- ja accessor-makrojen roolien ymmärtäminen. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Makrojen roolit: itsenäiset ja liitetyt”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Makrojen roolit: itsenäiset ja liitetyt
- Itsenäisen lausekemakron kirjoittaminen
- Liitetyt jäsenmakrot boilerplate-koodin vähentämiseen
- Makrojen testaaminen ja virheenkorjaus