Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 静态枚举和静态结构之间的区别_Swift - Fatal编程技术网

Swift 静态枚举和静态结构之间的区别

Swift 静态枚举和静态结构之间的区别,swift,Swift,假设枚举或结构是静态的,如果它们不在实例中存储任何值。静态枚举和静态结构之间有什么区别吗 enum StaticEnum { static var someStaticVar = 0 static func someStaticFunc() {} } struct StaticStruct { static var someStaticVar = 0 static func someStaticFunc() {} } 主要区别在于不能构造没有案例的枚举。因此,

假设枚举或结构是静态的,如果它们不在实例中存储任何值。静态枚举和静态结构之间有什么区别吗

enum StaticEnum {
    static var someStaticVar = 0
    static func someStaticFunc() {}
}

struct StaticStruct {
    static var someStaticVar = 0
    static func someStaticFunc() {}
}

主要区别在于不能构造没有案例的枚举。因此,如果您只是在寻找用作某些静态成员名称空间的对象,则最好使用枚举,因为您不能意外地创建实例

let e = StaticEnum() // error: 'StaticEnum' cannot be constructed because it has no accessible initializers
let s = StaticStruct() // Useless, but legal

使用
enum
作为名称间隔的方式似乎有些奇怪。一开始我觉得很不清楚。但我不确定是否值得拥有一个独立的
名称空间
构造,它本质上就像一个无大小写的
枚举
@AlexanderMomchliov我当然同意使用无大小写枚举作为名称空间感觉有点奇怪,它更像是一个有用的副作用,而不是一个预期的功能。尽管考虑到实际上很少需要“仅一个名称空间”(我只能想到stdlib中的一个示例,但即使它利用了一个泛型参数,因此也不完全是“仅一个名称空间”),但我可以理解缺少
名称空间
构造。相关:。