@dynamicMemberLookup structD{ // 找字符串 subscript(dynamicMemberm: String) -> String { let p = ["one": "first", "two": "second"] return p[m, default: ""] } // 找整型 subscript(dynamicMemberm: String) -> Int { let p = ["one": 1, "two": 2] return p[m, default: 0] } // 找闭包 subscript(dynamicMemberm: String) -> (_ s: String) -> Void { return { print("show \($0)") } } // 静态数组成员 var p = ["This is a member"] // 动态数组成员 subscript(dynamicMemberm: String) -> [String] { return ["This is a dynamic member"] } }
let d =D() let s1: String= d.one print(s1) // first let i1: Int= d.one print(i1) // 1 d.show("something") // show something print(d.p) // ["This is a member"] let dynamicP:[String] = d.dp print(dynamicP) // ["This is a dynamic member"]