Swift:枚举和模式匹配

TL; DR:EnumsAndPatternMatching.playground

您对Swift的研究越深入,您就会越发意识到枚举是该语言的主要特征。 在涉及Swift的大多数讨论中,Optionals占主导地位,许多人可能会对声明为Int的属性感到惊讶 可以扩展为Optional 并通过cmd单击该声明以查看Optional是枚举类型。 并且由于它是一个枚举,因此它具有两个名为.none.some(Wrapped)的值

新的Swift开发人员很早就学到了使用“ if let ”解开可选值。 模式匹配不太常见,但在某些代码库中可能很常见,可以进行模式匹配,以检查可选参数是否具有值,而无需将其展开或与nil比较。 下面的要点显示了一个与nil以及.none.some进行比较的示例。

您会看到每种类型的甜甜圈都有一个计数。 最后一种是果冻甜甜圈,这是唯一带有馅料的甜甜圈。 吃甜甜圈的功能使用一个switch语句,该语句根据where子句中的给定条件进行匹配。 实际上,不是简单地在每个枚举值上进行匹配的常规switch语句,而是实际上使用.sugar多次使用了不同的模式匹配筛选器。

您可能想知道将在哪里使用它。 常见的是创建使用错误协议的枚举类型,以便可以用枚举值之一以及可能适合该值的任何其他详细信息初始化枚举值。 您的应用程序或框架可以定义使用枚举类型设置的域,代码和错误字符串,并且在记录或报告错误时,可以通过一系列全面的模式匹配来过滤它们。

下一页:字符串和路径