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).