快速枚举中关联值和原始值之间的差异

安基·戈尔

Swift枚举具有关联值和原始值。但是我不清楚这些值的用例。因此,如果有人能解释关联值和原始值之间的差异,我将不胜感激,举个例子将非常有帮助。

空速

原始值用于当枚举中的每种情况都由编译时设置值表示时。类似于常量,即

let A = 0
let B = 1

类似于:

enum E: Int {
    case A  // if you don't specify, IntegerLiteralConvertible-based enums start at 0
    case B
}

所以,A有一个固定的原始值0B1在编译时间等设置。它们都必须是同一类型(原始值的类型适用于整个枚举,而不是每种情况)。它们只能是文字可转换的字符串,字符或数字。它们都必须是不同的(两个枚举不能具有相同的原始值)。

关联值更像是变量,与枚举情况之一关联

enum E {
    case A(Int)
    case B
    case C(String)
}

在这里,A现在有一个关联Int,可以保存任何整数值。B另一方面,没有关联值。C具有关联性String关联类型可以是任何类型,而不仅仅是字符串或数字。

任何给定的type值E将仅持有关联的类型之一,即Int如果枚举为an则为a A,或者String如果枚举为a则为a C它仅需要足够的空间来容纳两者中的较大者。像这样的类型有时称为“区分联合”(undiscriminated unions)-联合是可以容纳多种不同类型的变量,但是(从枚举的情况下)您知道它持有哪种类型。

它们甚至可以是通用的。最常见的示例是Optional,其定义如下:

enum Optional<T> {
    case .Some(T)
    case .None
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在快速枚举中,何时使用原始值以及何时使用关联值

来自分类Dev

查找熊猫中按值关联的行之间的差异

来自分类Dev

快速枚举中的值访问

来自分类Dev

带有关联值的快速枚举中的等式运算符重载

来自分类Dev

r值和l值之间的差异

来自分类Dev

Option(值)和Some(值)之间的差异

来自分类Dev

如何实现枚举关联值的快速下标设置器

来自分类Dev

关联值是引用类型时的快速枚举大小

来自分类Dev

分组中的值之间的差异

来自分类Dev

Excel-查找值和列表以及关联的索引之间的最小差异

来自分类Dev

更改关联枚举的值

来自分类Dev

用原始值枚举

来自分类Dev

从枚举中快速提取2个值

来自分类Dev

Tensorflow和skimage之间的像素值差异

来自分类Dev

无和<无值>之间的差异

来自分类Dev

传递值和参考之间的差异

来自分类Dev

在tableview和viewController之间快速传递值

来自分类Dev

JavaScript中关联数组的[]和{}之间的差异

来自分类Dev

不同行中的值之间的差异

来自分类Dev

Swift枚举-约束关联值

来自分类Dev

绑定到枚举的关联值

来自分类Dev

列的最大值和最小值之间的差异

来自分类Dev

如何在Swift枚举中打印关联值?

来自分类Dev

在Swift中理解带有函数作为关联值的枚举

来自分类Dev

如何从可解码的枚举中获取原始值?迅速

来自分类Dev

统计模型中预测值与拟合值之间的差异

来自分类Dev

最佳输出中优先值与优先值之间的差异

来自分类Dev

快速设置值以在我的自定义类中枚举

来自分类Dev

查找当前时间和存储在数据库中的时间值之间的差异?