Swift Mirror 用于反射的类

发布于 2024-09-18 09:03:39 字数 572 浏览 11 评论 0

Mirror 是 Swift 提供的一个用于反射的类,我们介绍一下 他的简单用法。

struct Point {
    let x: Int
    let y: Int
    let z: Int
}

let p = Point(x: 1, y: 2, z: 3)
let mirror = Mirror(reflecting: p)
for child in mirror.children {
    print("label:\(child.label)")
    print("value:\(child.value)")
}

// 输出
// label:Optional("x")
// value:1
// label:Optional("y")
// value:2
// label:Optional("z")
// value:3

Mirror 可以轻松将一个对象的属性和值反射出来。

但是 Swift 由于弱化了反射的功能,它无法赋值,你可以读,但是你不能写,即使写,也不是原来的那个对象了,因为它会给你个 copy 版本。 这也就是为什么 SwiftJSON 的库要用操作内存偏移来给对象赋值,因为没办法通过反射赋值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

暮倦

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

新人笑

文章 0 评论 0

mb_vYjKhcd3

文章 0 评论 0

小高

文章 0 评论 0

来日方长

文章 0 评论 0

哄哄

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文