小编Joh*_*ney的帖子

为什么没有swift中类的存储类型属性?

通过Swift编程语言,我惊讶地发现,与结构和枚举不同,类不支持存储的类型属性.

这是其他OO语言的一个共同特征,所以我认为他们有一个很好的理由决定不允许它.但我无法猜出这是什么原因,特别是因为结构(和枚举)有它们.

难道只是它是Swift的早期时代,它尚未实现吗?或者语言设计决策背后有更深层次的原因吗?

BTW,"存储类型属性"是Swift术语.在其他语言中,这些可能被称为类变量.示例代码:

struct FooStruct {
    static var storedTypeProp = "struct stored property is OK"
}

FooStruct.storedTypeProp // evaluates to "struct stored property is OK"

class FooClass {
    class var computedClassProp: String { return "computed class property is OK" }

    // class var storedClassProp = "class property not OK" // this won't compile
}

FooClass.computedClassProp // evaluates to "computed class property is OK"
Run Code Online (Sandbox Code Playgroud)

编辑:

我现在意识到这种限制很容易解决,例如,通过使用具有存储属性的嵌套结构:

class Foo {
    struct Stored {
        static var prop1 = "a stored prop"
    } …
Run Code Online (Sandbox Code Playgroud)

language-design swift

37
推荐指数
3
解决办法
8647
查看次数

标签 统计

language-design ×1

swift ×1