Ana*_*nko 4 struct initialization swift
我想在初始化CurrendData.location后获取其随机值。CurrentData我想出了以下代码:
struct CurrentData {
var size: (x: Int, y: Int)
var location: (x: Int, y: Int)
init(size: (x: Int, y: Int)) {
self.size = size
self.location = (getRandom(size.x), getRandom(size.y)) //error
}
private func getRandom (_ value:Int) -> Int {
return Int.random(in: 0...value-1)
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:“在初始化所有存储的属性之前使用了‘self’”。如何解决?
getRandom是一个实例方法,因此它被调用self(但是,Swift 允许您在访问实例方法/属性时省略self)。
如果您希望能够从 调用函数init,则需要将其声明为static方法而不是实例方法。然后,您可以通过写出类型名称 ( CurrentData) 或简单地使用来调用静态方法Self。
struct CurrentData {
var size: (x: Int, y: Int)
var location: (x: Int, y: Int)
init(size: (x: Int, y: Int)) {
self.size = size
self.location = (Self.getRandom(size.x), Self.getRandom(size.y))
}
private static func getRandom (_ value:Int) -> Int {
Int.random(in: 0...value-1)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4843 次 |
| 最近记录: |