c++ foreach用法_[SwiftUI 知识碎片] 结构体和类,ForEach,绑定

ad5de117fd4dec74268ca5797dfea5b2.png
译自 a free Hacking with Swift tutorial
更多内容,欢迎关注公众号 「Swift花园」
喜欢文章?不如来个 ➕三连?关注专栏,关注我

结构体 vs 类

Swift 里有两样东西对你来说一定不陌生:结构体和类。它们都是可以让我们构建拥有属性和方法的复杂数据类型的方法,但它们的工作方式,尤其是两者间的差异,是一个 (Swift 语言设计中) 很要紧的存在。

如果你还记得的话,结构体和类之间有五个关键的差异:

  1. 类没有逐一成员构造函数;结构体默认获得逐一构造成函数。
  2. 类可以使用继承来构建功能;结构不能。
  3. 如果你复制一个类,两份拷贝都会指向相同的数据;但结构体的拷贝,其数据是各自独立的。
  4. 类可以有析构函数;结构体没有。
  5. 你可以在常量类实例里改变变量属性的值;但常量结构体实例里的属性是固定的,不管它是常量还是变量。

在 Apple 原来的编程语言 Objective-C 中,我们几乎为所有的事物使用类 —— 因为没的选,几乎所有东西都基于类来运作。

Swift 中情况不一样,我们拥有选择权,选择应该基于上面提到的那些差异中的因素。之所以说”应该“,是因为即便你看到有人不关心两者的差异,总是只用 class 或者 struct, 也并不稀奇。

选择结构体或者类取决于你和你要解决的问题。不过我希望你思考它们是如何传递你的意图的。 Donald Knuth 说过,“程序是给人读的,偶尔给计算机运行”,这句话正合我意:当别人阅读你的代码时,你的意图是否能清晰地传达给他们?

如果你大部分时候用的是结构体,然后在一个特定的地方换成了类,这就传达了一个意图: 这个东西不一样,需要不同的用法。但如果你总是使用类,这种区别就消失了 —— 毕竟,不太可能你在大多数情况下都得使用类。

提示: SwiftUI 有一个迷人的细节是它扭转了我们使用结构体和类的方式。在 UIKit 中我们针对数据使用结构体,针对 UI 使用类,但在 SwiftUI 中完全相反 —— 这给我们提了醒,学习很重要ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值