我不确定两者中哪个最好定义常量。结构或枚举。每次我使用或不使用结构都会被复制吗?当我想到带有static let常量的结构时,我认为它会一直复制是没有意义的。但是,如果它不会被复制,那我拿走什么都没关系?
static let
选择结构或枚举有什么优势?
结构和枚举均起作用。例如,两者
struct PhysicalConstants { static let speedOfLight = 299_792_458 // ... }
和
enum PhysicalConstants { static let speedOfLight = 299_792_458 // ... }
工作并定义静态属性PhysicalConstants.speedOfLight。
PhysicalConstants.speedOfLight
这两个struct和enum是值类型,以便将适用于枚举为好。但这 无关紧要 ,因为您根本不必创建值:静态属性(也称为 类型 属性)是类型本身的属性,而不是该类型的实例。
struct
enum
如链接文章所述:
使用不区分大小写的枚举的优点是它不会被意外实例化并且可以用作纯名称空间。
所以对于一个结构,
let foo = PhysicalConstants()
创建一个类型的(无用)值PhysicalConstants,但是对于一个不区分大小写的枚举,它将无法编译:
PhysicalConstants
let foo = PhysicalConstants() // error: 'PhysicalConstants' cannot be constructed because it has no accessible initializers