Wie übergebe ich ein Flag global, um @available(*, veraltet) in einem Swift-Makro bedingt anzuzeigen/auszublenden?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie übergebe ich ein Flag global, um @available(*, veraltet) in einem Swift-Makro bedingt anzuzeigen/auszublenden?

by Guest » 13 Jan 2025, 14:37

Ich versuche, ein Swift-Makro zu erstellen, das das Attribut @available(*, veraltet) allen Eigenschaften einer Struktur bedingt hinzufügt, wenn das Makro angewendet wird. Ich möchte dieses Verhalten global mithilfe eines benutzerdefinierten Flags zur Kompilierungszeit steuern, sodass ich zur Build-Zeit in meinem Projekt zwischen dem Anzeigen und Ausblenden der @available-Annotation umschalten kann.
Das würde ich gerne tun Übergeben Sie ein Flag zur Kompilierungszeit global im Projekt und lassen Sie es das Verhalten des Swift-Makros bedingt beeinflussen.
Beispiel:
Ich möchte das Makro wie folgt verwenden:

Code: Select all

@MyMacro()
struct X {
var a: String
var b: Int
}
Und je nachdem, ob ein globales Flag zur Kompilierungszeit gesetzt ist, sollte das Ergebnis entweder so aussehen:

Code: Select all

struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
Mit aktiviertem Flag

Code: Select all

struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
Mit deaktivierter Flagge:

Code: Select all

struct X {
var a: String
var b: Int
}

Top