0Pricing
Swift Academy · 강의

상용구를 줄이는 연결형 멤버 매크로

멤버 매크로로 init, CodingKeys 또는 Equatable 준수를 자동 생성합니다.

상용구를 줄이는 연결형 멤버 매크로은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

멤버 매크로 개요

부착형 멤버 매크로는 장식된 타입에 새로운 멤버(프로퍼티, 메서드, 이니셜라이저)를 직접 생성합니다.

@AddID
struct User { var name: String }
// After expansion:
// struct User { var name: String; var id = UUID() }

MemberMacro 준수하기

MemberMacro를 구현하고 새 멤버를 나타내는 DeclSyntax 배열을 반환하십시오.

import SwiftSyntaxMacros

struct AddIDMacro: MemberMacro {
  static func expansion(
    of node: AttributeSyntax,
    providingMembersOf decl: some DeclGroupSyntax,
    in context: some MacroExpansionContext
  ) throws -> [DeclSyntax] {
    return ["var id = UUID()"]
  }
}

이니셜라이저 생성하기

필요할 때 멤버 매크로로 사용자 지정 이니셜라이저를 생성하여 멤버별 이니셜라이저를 대체할 수 있습니다.

// Macro expansion returns:
[
  "init(name: String) { self.name = name; self.id = UUID() }"
]

@Observable 매크로 내부

Swift에 내장된 @Observable은 멤버 매크로를 사용하여 클래스에 관찰 인프라를 추가합니다.

@Observable
class Counter {
  var count = 0
  // macro adds: _$observationRegistrar, access(), withMutation()
}

장식된 타입 읽기

decl 매개변수를 통해 장식된 타입의 프로퍼티에 접근하여 컨텍스트를 반영하는 멤버를 생성하십시오.

if let structDecl = decl.as(StructDeclSyntax.self) {
  let members = structDecl.memberBlock.members
  // iterate to inspect stored properties
}

저장 프로퍼티 추출하기

멤버 목록에서 저장 프로퍼티 패턴을 사용하는 변수 선언을 필터링하여 코드 생성을 제어하십시오.

let storedProps = members.compactMap { member -> VariableDeclSyntax? in
  guard let varDecl = member.decl.as(VariableDeclSyntax.self),
        varDecl.bindingSpecifier.tokenKind == .keyword(.var)
  else { return nil }
  return varDecl
}

멤버에서 Equatable 생성하기

@AutoEquatable 매크로는 각 저장 프로퍼티를 비교하여 ==를 생성할 수 있습니다.

// Generated code:
static func == (lhs: User, rhs: User) -> Bool {
  lhs.name == rhs.name && lhs.id == rhs.id
}

멤버 매크로와 준수 매크로 결합하기

멤버를 추가하고 프로토콜 준수도 선언하기 위해 MemberMacro를 ConformanceMacro와 함께 사용하는 경우가 많습니다.

struct AutoEquatableMacro: MemberMacro, ConformanceMacro { ... }

특성 인수

매크로가 생성하는 코드를 사용자 지정하도록 인수를 받을 수 있습니다.

@Clamped(range: 0...100)
var score: Int = 50
// macro reads range from attribute node and generates clamping accessors

매크로 오류 보고

매크로를 잘못 사용했을 때 MacroExpansionError를 던지거나 진단 메시지를 생성하십시오.

guard decl.is(StructDeclSyntax.self) else {
  throw MacroError.message("@AddID can only be applied to structs")
}

빌드 성능

확장이 컴파일 시간에 수행되므로 멤버 매크로는 런타임 추가 비용을 발생시키지 않으며 생성된 코드를 캐시할 수 있습니다.

// All generated members are emitted as source code
// and compiled normally — no reflection at runtime

빠른 확인

부착형 멤버 매크로가 준수해야 하는 프로토콜은 무엇입니까?

수업 요약

멤버 매크로(MemberMacro)는 장식하는 타입을 위한 저장 프로퍼티, 계산 프로퍼티 및 이니셜라이저를 생성합니다. 타입에 이미 있는 멤버를 읽어 컨텍스트에 맞는 코드를 생성하십시오. ConformanceMacro와 결합하면 프로토콜 준수도 추가할 수 있습니다.

자주 묻는 질문

“상용구를 줄이는 연결형 멤버 매크로” 강의는 무료인가요?

네 — “상용구를 줄이는 연결형 멤버 매크로” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“상용구를 줄이는 연결형 멤버 매크로”에서 뭘 배우나요?

멤버 매크로로 init, CodingKeys 또는 Equatable 준수를 자동 생성합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“상용구를 줄이는 연결형 멤버 매크로” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 매크로 역할: 독립형과 연결형
  2. 독립형 표현식 매크로 작성하기
  3. 상용구를 줄이는 연결형 멤버 매크로
  4. 매크로 테스트와 디버깅
← Swift Academy(으)로 돌아가기