如何访问 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
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