@dynamicMemberLookup

2025. 11. 19. 11:30Swift

 

dynamicMemberLookup 말그대로 런타임에 멤버를 바라볼 수 있다는 뜻이예요. 

 

@dynamicMemberLookup을 선언하면,

  • 컴파일 타임에 정의하지 않은 프로퍼티라도 subscript(dynamicMember:) 메서드를 통해 런타임에 처리할 수 있도록 도와줘요.
  • "dot"을 통해 해당 타입의 프로퍼티에 접근할 수 있어요. 

@dynamicMemberLookup을 선언하면 subscript(dynamicMember:) 메서드는 필수적으로 구현해주어야 합니다!

@dynamicMemberLookup
struct User {
    var name: String
    var like: String

    subscript(dynamicMember key: String) -> String {
        switch key {
        case "hobby":
            return like
        default:
            return "none"
        }
    }
}

let member = User(name: "Jaelee", like: "보드")

// 사용 방법 1: dot (dynamicMemberLookup 덕분에 가능)
member.hobby

// 사용 방법 2: subscript
member[dynamicMember: "hobby"]

 

 

 

 

 

반응형