元类型、Self、Mirror:Swift运行时自省与动态类型系统
探索Swift的元类型(Metatype)、Self协议返回类型、Mirror反射机制,以及如何在运行时获取类型信息并构造动态行为。 · 难度:入门 · +10XP
元类型、Self、Mirror:Swift运行时自省与动态类型系统
Swift虽是静态语言,但内置强大的运行时自省能力。元类型(如 Int.self)允许你将类型当作值传递;Self在协议中指向最终实现类型;Mirror反射可以遍历任意值的属性与结构。本教程将结合这三个工具,讲解动态类型判断、泛型工厂方法以及可复用的日志/调试工具。
// 元类型使用示例
func createInstance<T>(of type: T.Type) -> T? {
if type == String.self {
return "Hello" as? T
}
return nil
}
let s: String? = createInstance(of: String.self)
print(s!) // Hello
// Mirror反射打印任意对象
func dumpProperties(_ value: Any) {
let mirror = Mirror(reflecting: value)
for child in mirror.children {
print("\(child.label ?? ""): \(child.value)")
}
}