当我必须在Swift中的类,结构和枚举之间选择时,我应该如何解释?

因为类,结构和枚举都有构造函数属性和计算属性,当我们在它们之间进行选择时,我应该怎么解释?
ChristopheD和Jack Wu的答案都很好,但我觉得他们不会碰到枚举,或者错过它们的重要性。 Swift枚举(意味着)是代数数据类型的完全实现。类和结构体传统上用于以面向对象语言建模数据,但枚举通常限于用作将变量的值限制为有限数量的可能性的便利方式。例如。 (C ):
enum MaritalStatus { Unmarried,Married,Divorced,WidowedOrWidowered };
MaritalStatus m = Unmarried;

Swift枚举可以做到上面,但他们可以做更多。当然语言指南有一个很好的barcode modelling example,但我知道的最好的例子,真正带来了数据建模与代数数据类型的点是Scott Wlaschin的演示:http://www.slideshare.net/ScottWlaschin/ddd-with-fsharptypesystemlondonndc2013

你可能会从整个演示文稿中受益,但是真正地得到你需要看到的点是幻灯片60,在那里他展示了如何在典型的业务线应用程序中建模“付款方式”。

演示中的示例是F#,但F#不是远离Swift,你可以很容易地映射他们之间。例如,Swift中的支付方法枚举如下:

enum PaymentMethod {
  case Cash // No extra data needed.
  case Cheque(Int) // Cheque #.
  case Card(CardType,CardNumber) // 2 pieces of extra data.
}

上面的观点是每个订单的付款方式只能是上述三种方法中的一种。编译器不允许任何其他操作。这是一个非常简洁的替代建立整个类层次结构,以模拟这些几乎琐碎的事情。

演示真的从那里开始,最好的部分是Swift可以做的几乎一切F#可以在数据建模,使用可选类型等。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...