使用swift在子类中设置基类“let”变量

时间:2014-12-09 14:53:20

标签: inheritance swift sprite-kit

我有一个继承SKScene的基类:

class BaseClass: SKScene {
    let round: Int!
}

继承基类的类:

class ChildClass: BaseClass {
    override init(size: CGSize) {
        super.init(size)
        self.round = 1
    }
}

不知何故,我无法修改self.round。它说Cannot assign to 'round' in 'self'

我以为感叹号会让我稍后设置值。

1 个答案:

答案 0 :(得分:2)

使用let声明的属性只能在它们所属的类的初始值设定项中变化。如果您需要子类来更改值,您的选项是(1)将round更改为var声明或(2)在BaseClass中创建接受值的初始值设定项round

第一个是微不足道的;这是第二个例子:

class BaseClass: SKScene {
    let round: Int!

    init(size: CGSize, round: Int) {
        self.round = round
        super.init(size: size)
    }
}

class ChildClass: BaseClass {
    init(size: CGSize) {
        super.init(size: size, round: 1)
    }
}

(退出init(coder:)实施......)