Swift 1.2在初始化后分配let

时间:2015-04-10 14:40:53

标签: swift let

我正在尝试为Swift 1.2中的let分配一个值,导致编译错误。在Apple的博客上,它说现在允许这样做

  

新规则是必须在使用前初始化let常量(如var),并且只能初始化,而不能在初始化后重新分配或变异。

所以在我的代码中,我在我的班级中创建了一个属性

class SampleClass: NSObject {
    let idOfSomething:String

    public func createSomething(idString:String)-> Void {
        self.idOfSomething = idString

    }

}

在我做到这一点之后,编译器抱怨我无法分配给自己

这是错误的快照,任何人都明白我做错了什么?

enter image description here

2 个答案:

答案 0 :(得分:3)

您所引用的语句对于本地和全局变量有效,而不适用于旧规则适用的属性:它们必须全部初始化为内联或初始化(除非它是一个可变的可选属性,这是自动初始化为nil)。

答案 1 :(得分:2)

您正在做的事情从不合法,但它仍然不是。这是let属性。你不能分配给它;它是一个常数,意味着它的价值永远不会改变。

你可以给它初始值(它将拥有的唯一值)的唯一方法是作为默认值或在初始化期间,即在初始化器中 - 并且public func createSomething不是初始化器。