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#可以在数据建模,使用可选类型等。