如何访问 swift 中 class 之外的常量?

How can I access a constant outside a class in swift?

class myClass {
    let x = 0
}

如何在 myClass 之外访问 x 常量?

您可以将其声明为静态变量,如下所示:

class MyClass {
   static var x = 0
}

然后您可以使用 MyClass.x 在 class 之外访问它。如果你声明它 "class var",它会给你错误信息 "Class stored properties not yet supported in classes; did you mean 'static'?",所以它们可能会在以后成为语言的一部分。此时,您应该为 class:

计算属性
class MyClass {
   static var x: Int {
       return 3
   } 
} // This actually makes no sense to be a computed property though

您可以在以下位置找到有关类型属性的一些信息:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html

x 没有定义为常量,而是定义为可变实例 属性。为了使其不可变(这在技术上不同于常量,但结果不会改变)你必须使用 let.

也就是说,如果它是一个实例 属性,您需要一个 class 实例,因为 属性 是作为 class 实例化的一部分创建的:

let instance = MyClass()
instance.x

如果你想让它成为静态的属性,可以通过类型而不是它的实例访问,你应该将它声明为静态的:

class MyClass {
    static let x = 0
}

然而,静态存储属性仅在 swift 1.2 中可用。

对于以前的版本,您可以使用计算 属性:

    class var x: Int { return 0 }

或将 class 转换为结构:

struct MyClass {
    static let x = 0
}

另一种解决方案是使用嵌套结构:

class MyClass {
    struct Static{
        static let x = 0
    }
}

MyClass.Static.x