我有一个在Beta 2中运行的2D阵列。但是,在Beta 3中我得到的@lvalue $ T15与T不同?'通过下标设置时。
class Array2D<T> {
let columns: Int
let rows: Int
let array: [T?]
init(columns: Int, rows: Int) {
self.columns = columns
self.rows = rows
array = [T?](count: rows*columns, repeatedValue: nil)
}
subscript(column: Int, row: Int) -> T? {
get {
return array[row*columns + column]
}
set {
array[row*columns + column] = newValue // Error here
}
}}
有关如何解决此问题的任何想法?
答案 0 :(得分:7)
在Beta3中,常量数组是完全不可变的,而变量数组是完全可变的。将let array: [T?]
更改为var array: [T?]
,您的代码应该有效。