Swift 1.2 初始化后赋值let
Swift 1.2 assigning let after initialization
我正在尝试为 Swift 1.2 中的 let
赋值,这会导致编译错误。在 Apple 的博客上,它说现在允许这样做
The new rule is that a let constant must be initialized before use (like a var), and that it may only be initialized, not reassigned or mutated after initialization.
所以在我的代码中,我在 class
中创建了一个 属性
class SampleClass: NSObject {
let idOfSomething:String
public func createSomething(idString:String)-> Void {
self.idOfSomething = idString
}
}
在我走到这一步之后,编译器抱怨我无法分配给 self
这是错误的快照,有人知道我做错了什么吗?
你的所作所为从未合法,现在仍然不合法。这是一个let
属性。你不能分配给它;它是一个常数,这意味着它的值永远不会改变。
唯一可以给它 初始值 值(它将永远拥有的唯一值)的唯一方法是作为其默认值或在初始化期间,即在初始化程序中 — 和 public func createSomething
不是初始值设定项。
您所指的语句对局部变量和全局变量有效,但对适用旧规则的属性无效:它们必须全部初始化为内联或在初始化程序中(除非它是可变的可选 属性,自动初始化为nil).
我正在尝试为 Swift 1.2 中的 let
赋值,这会导致编译错误。在 Apple 的博客上,它说现在允许这样做
The new rule is that a let constant must be initialized before use (like a var), and that it may only be initialized, not reassigned or mutated after initialization.
所以在我的代码中,我在 class
中创建了一个 属性class SampleClass: NSObject {
let idOfSomething:String
public func createSomething(idString:String)-> Void {
self.idOfSomething = idString
}
}
在我走到这一步之后,编译器抱怨我无法分配给 self
这是错误的快照,有人知道我做错了什么吗?
你的所作所为从未合法,现在仍然不合法。这是一个let
属性。你不能分配给它;它是一个常数,这意味着它的值永远不会改变。
唯一可以给它 初始值 值(它将永远拥有的唯一值)的唯一方法是作为其默认值或在初始化期间,即在初始化程序中 — 和 public func createSomething
不是初始值设定项。
您所指的语句对局部变量和全局变量有效,但对适用旧规则的属性无效:它们必须全部初始化为内联或在初始化程序中(除非它是可变的可选 属性,自动初始化为nil).