Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inheritance 设置基类';让';使用swift的子类中的变量_Inheritance_Swift_Sprite Kit - Fatal编程技术网

Inheritance 设置基类';让';使用swift的子类中的变量

Inheritance 设置基类';让';使用swift的子类中的变量,inheritance,swift,sprite-kit,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。它说,不能分配给“self”中的“round” 我以为感叹号

我有一个继承SKScene的基类:

class BaseClass: SKScene {
    let round: Int!
}
以及继承基类的类:

class ChildClass: BaseClass {
    override init(size: CGSize) {
        super.init(size)
        self.round = 1
    }
}
不知何故,我无法修改self.round。它说,
不能分配给“self”中的“round”


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

使用
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:)
实现…

让绑定暗示不变性<代码>不是用于可变性,而是用于隐式展开的选项。太糟糕了,没有涓涓细流的方式来使用let:/谢谢你Nate Cook!