相关疑难解决方法(0)

为什么没有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
查看次数

扩展可能不包含存储的属性,但为什么允许静态

扩展不能包含存储属性,但为什么可以在扩展中定义静态存储属性?

我也没有找到任何文档提到扩展中允许静态属性.

extension String {
  static let test = "Test"
  static var test2 = "Test2"
}
Run Code Online (Sandbox Code Playgroud)

swift swift-extensions

18
推荐指数
1
解决办法
5104
查看次数

标签 统计

swift ×2

language-design ×1

swift-extensions ×1