访问类内的私有数组时出错

  • 本文关键字:数组 出错 访问 swift4.1
  • 更新时间 :
  • 英文 :


当我尝试访问类(MyArray(内的私有数组(arr(时,我收到一条错误消息。我试图实现的是创建一个用于反转数组内容的闭包,并且可以使用实例变量从类外部调用此闭包。我无法理解此错误。有人可以帮忙吗!

public class MyArray {
private var arr: [Int] = []
internal static var instance: MyArray?
public var reverse = { () -> [Int] in
var returnArray : [Int] = []
var counter = arr.count - 1 // Error: Instance member 'arr' cannot be used on type 'MyArray'
for _ in (0...arr.count - 1) { // Error: Instance member 'arr' cannot be used on type 'MyArray'
returnArray.append(arr[counter])
counter -= 1
}
return returnArray
}
private init() {}
public static func getInstance() -> MyArray {
if self.instance == nil {
self.instance = MyArray()
}
return self.instance!
}
}

使用惰性属性能够访问在闭包外部声明的变量。

所以。。。

• 将此public var reverse =更改为此public lazy var reverse =

• 然后在闭包外部定义的每个变量前面添加self.

请阅读以下内容:了解懒惰属性

懒惰规则:

你不能用懒惰和让.

您不能将其与计算属性一起使用。

因为,每次我们在执行计算块中的代码后尝试访问计算属性时,都会返回该值。

您只能对结构体和类的成员使用 lazy。

惰性变量不是原子初始化的,因此不是线程安全的。

最新更新