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
有一个固定的原始值0
,B
的1
在编译时间等设置。它们都必须是同一类型(原始值的类型适用于整个枚举,而不是每种情况)。它们只能是文字可转换的字符串,字符或数字。它们都必须是不同的(两个枚举不能具有相同的原始值)。
关联值更像是变量,与枚举情况之一关联:
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] 删除。
我来说两句