Mobile Development Swift Subjective
Oct 04, 2025

What is the difference between static and dynamic member lookup?

Detailed Explanation
Swift provides both static and dynamic member lookup for flexible API design.\n\n• **Static Member Lookup:**\n• Resolved at compile time\n• Type-safe and performant\n• Standard Swift behavior\n\n\nstruct Point { \n let x: Double\n let y: Double\n \n let zero = Point(x: 0, y: 0)\n}\n\nlet origin = Point.zero // Static lookup\n\n\n• **Dynamic Member Lookup:**\n• Resolved at runtime\n• Enables flexible APIs\n• Requires @dynamicMemberLookup\n\n\n@dynamicMemberLookup\nstruct DynamicStruct { \n var storage: [String: Any] = [:]\n \n subscript(dynamicMember key: String) -> Any? {\n get { return storage[key] }\n set { storage[key] = newValue }\n }\n}\n\nvar dynamic = DynamicStruct()\ndynamic.name = "Swift" // Dynamic lookup\ndynamic.version = 5.5\n\n\n• **Advanced Dynamic Lookup:**\n\n@dynamicMemberLookup\nstruct JSON { \n let data: [String: Any]\n \n subscript(dynamicMember key: String) -> JSON? {\n let value = data[key] else { return nil }\n let dict = value as? [String: Any] {\n return JSON(data: dict)\n }\n return nil\n }\n}\n\n// Usage\nlet json = JSON(data: ["user": ["name": "Alice", "age": 30]])\nlet userName = json.user?.name // Dynamic chaining\n\n\n• **Use Cases:**\n• JSON/Dictionary wrappers\n• Scripting language bridges\n• Dynamic configuration\n• Builder patterns
Discussion (0)

No comments yet. Be the first to share your thoughts!

Share Your Thoughts
Feedback