Swift Macros에서는 Swift Error를 이용해 Custom Error 메시지를 노출시킬 수 있습니다. 이 내용도 앞서 1편~4편에서의 DictionaryStorage 를 계속 예시로 들고있는데요,, 간단히 말하면 DictionaryStorage매크로는 struct에 적용되어 init()과 var dictionary프로퍼티를 만들어줍니다. 근데 만약 enum에 매크로를 작성하게 되면, init에 var dictionary라는 저장프로퍼티를 넣을 수 없으니 컴파일 오류가 나겠죠? 물론 전개된걸 보고 유추를 하면 아..이건 enum에 쓸 수 없겠구나.. 하면서 유추를 할 수는 있겠지만 약간 혼란스러울수가 있겠죠,, 그래서 우리는 enum에 쓰면 이건 struct에만 쓸 수 있는 매크로야!!!!!!..
앞에서는 매크로가 뭔지, 매크로 역할(roles)에 대해 작성했었는데, 이제 매크로 구현부는 어떻게 생겼나..소개하는 WWDC 내용을 정리해보겠습니다~ 구현과 선언 연결하기 일단 앞에서 계속 봤듯이 선언은 이런식으로 macro 키워드와 매크로 이름, 받을 매개변수 등을 적어주고 매크로 위에 역할을 적어주면 됩니다~ 근데 .. 어떤 내용으로 전개할건지를 포함한 매크로 구현부도 작성해줘야겠죠?! 이 구현부는 함수로 만들고, 선언의 = 옆에 작성해주면 됩니다. 대개는 이런 external 매크로를 사용하게 되는데, 이 external macro는 compiler plugin에 구현되어 있습니다. 1편에서 봤던 매크로 작동방식중에 이런내용이 있었는데요!! Swift Compiler에서 #stringify라는 매..
@1편에서는 매크로가 뭔지에 대해, 2편에서는 매크로의 role이 뭔지, 그 중 freestanding 매크로에 대해 작성해봤는데, 이번에는 macro의 role중 attached macro에 대해 써보려고 합니다. freestanding매크로의 경우에는 오직 전달된 인수만 받는데, attached매크로의 경우에는 매크로와 연결된 선언부분에 대한 정보를 가져올 수도 있다는 차이점이 있습니다. @attached(peer) attached peer매크로는 매크로가 적용된 선언부분 옆에 새로운 선언을 만들 수 있습니다. 예를들어, async함수인 fetchAvatar()라는 함수를 만들었다고 했을 때, 옛날 방식인 completion방식도 필요하다고 생각해봅시다. 그러면 async함수를 작성한 후, 또 매개변..